Skip to content

Commit 7e5069d

Browse files
authored
Merge pull request #86 from oslabs-beta/stephany/readme
feat: Update Readme and add Contributing file
2 parents 5710b61 + 588eb1d commit 7e5069d

File tree

3 files changed

+215
-0
lines changed

3 files changed

+215
-0
lines changed

CONTRIBUTING.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Contribution Guidelines
2+
3+
We are always open to accepting any potential contributions. Here is how you can contribute:
4+
5+
1. Fork the repository
6+
2. Clone your forked repository
7+
8+
```bash
9+
git clone https://github.com/your-username/repository-name.git
10+
```
11+
12+
3. Install dependencies for both mlflow and mlflow-site directories
13+
14+
```bash
15+
cd mlflow && npm install
16+
cd ../mlflow-site && npm install
17+
```
18+
19+
4. Run the mlflow-site
20+
21+
```bash
22+
npm run dev
23+
```
24+
25+
5. Create your feature branch
26+
27+
```bash
28+
git checkout -b feature/AmazingFeature
29+
```
30+
31+
6. Make your changes
32+
33+
7. Run ESLint to check code style
34+
35+
```bash
36+
npm run lint
37+
```
38+
39+
8. Run tests to ensure your changes don't break existing functionality
40+
41+
(Make sure you have mlflow UI server running on port 5002. We set 5002 as our default port for testing.)
42+
43+
```bash
44+
mlflow ui --port 5002 # Run this in a separate terminal
45+
npm run test
46+
```
47+
48+
9. Commit your changes
49+
50+
```bash
51+
git commit -m 'Add AmazingFeature'
52+
```
53+
54+
10. Push to the branch
55+
56+
```bash
57+
git push origin feature/AmazingFeature
58+
```
59+
60+
11. Open a Pull Request
61+
62+
**Note:** Please ensure your code adheres to our style guidelines and includes appropriate documentation for any new features.

README.md

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,154 @@
1+
<div style="text-align: center">
2+
<img src="mlflow-site/public/assets/mlflow-js-logo-whitebg.png" width=600px;"/></div>
13

4+
<br>
5+
6+
## About
7+
8+
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](/LICENSE)
9+
![Release](https://img.shields.io/badge/Release-v1.0.0-426B20)
10+
![Build](https://img.shields.io/badge/Build-Passing-brightgreen.svg)
11+
![Coverage](https://img.shields.io/badge/Coverage-80%25-c7ea46.svg)
12+
[![Contributions](https://img.shields.io/badge/Contributions-Welcome-brightgreen.svg)](/CONTRIBUTING.md)
13+
14+
<i>mlflow.js</i> is an open-source npm library designed for JavaScript developers who want to integrate with MLflow, providing tools and functionalities for managing machine learning lifecycle.
15+
16+
<a href="">Visit the official mlflow.js site for more info!</a>
17+
18+
Visit our LinkedIn page below:
19+
20+
[![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/mlflowjs/)
21+
22+
<br>
23+
24+
## Features
25+
26+
<i>mlflow.js</i> covers all REST API endpoints under MLflow's Tracking Server and Model Registry. Official documentation for MLflow.js can be found <a href="">here</a>. Moreover, high-level abstraction workflows have been developed to facilitate developers' work processes.
27+
28+
### High-Level Abstraction Workflows
29+
30+
**Experiment Manager**
31+
32+
- runExistingExperiment - Full workflow of creating, naming, and starting a run under an existing experiment, logging metrics, params, tags, and the model, and finishing the run
33+
- runNewExperiment - Full workflow of creating, naming, and starting a run under a new experiment, ogging mettrics, params,tags, and the model, and finishing the run
34+
- experimentSummary - Returns an array of all the passed-in experiment's runs, sorted accoroding to the passed-in metric
35+
36+
**Run Manager**
37+
38+
- cleanupRuns - Deletes runs that do not meet certain criteria and return an object of deleted runs and details
39+
- copyRun - Copies a run from one experiment to another (without artifacts and models)
40+
41+
**Model Manager**
42+
43+
- createRegisteredModelWithVersion - Creates a new registered model and the frist version of that model
44+
- updateRegisteredModelDescriptionAndTag - Updates a registered model's description and tags
45+
- updateAllLatestModelVersion - Updates the latest version of the specified registered model's description, adds a new alias, and tag key/value foro tthat latest version
46+
47+
<br>
48+
49+
## Built with
50+
51+
[![TypeScript](https://img.shields.io/badge/TypeScript-0077B5?style=for-the-badge&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
52+
[![JavaScript](https://img.shields.io/badge/JavaScript-000435?style=for-the-badge&logo=javascript&logoColor=00fff)](https://www.javascript.com/)
53+
[![React](https://img.shields.io/badge/React-36454F?style=for-the-badge&logo=React&logoColor=00fff)](https://react.dev/)
54+
[![Next.js](https://img.shields.io/badge/Next.js-24292e?style=for-the-badge&logo=next.js&logoColor=00fff)](https://nextjs.org/)
55+
[![TailwindCSS](https://img.shields.io/badge/Tailwind_CSS-008080?style=for-the-badge&logo=tailwindcss&logoColor=bfffff)](https://tailwindcss.com/)
56+
[![ESLINT](https://img.shields.io/badge/ESLINT-4B32C3?style=for-the-badge&logo=eslint&logoColor=bfffff)](https://eslint.org/)
57+
[![Node.js](https://img.shields.io/badge/Node.js-339933?style=for-the-badge&logo=node.js&logoColor=ffffff)](https://nodejs.org/en/)
58+
[![Jest](https://img.shields.io/badge/Jest-800020?style=for-the-badge&logo=jest&logoColor=00fff)](https://jestjs.io/)
59+
[![GitHub Actions](https://img.shields.io/badge/GitHub_Actions-30363d?style=for-the-badge&logo=github&logoColor=00fff)](https://github.com/features/actions)
60+
[![Docker](https://img.shields.io/badge/Docker-lightblue?style=for-the-badge&logo=Docker&logoColor=00fff)](https://www.docker.com/)
61+
[![NPM](https://img.shields.io/badge/NPM-CC3534?style=for-the-badge&logo=npm&logoColor=00fff)](https://www.npmjs.com/)
62+
[![Vercel](https://img.shields.io/badge/Vercel-966FD6?style=for-the-badge&logo=Vercel&logoColor=00fff)](https://vercel.com/)
63+
64+
<br>
65+
66+
## Prerequisites
67+
68+
### Set Up MLflow UI
69+
70+
Ensure MLflow is installed on your system:
71+
72+
```bash
73+
pip install mlflow
74+
```
75+
76+
Note: MLflow is compatible with MacOS. If you encountner issues with the default system Python, consider installing Python 3 via the Homebrew package manger using `brew install python`. In this case, installing MLflow is now `pip3 install mlflow`.
77+
78+
### Start the MLflow Tracking Server
79+
80+
To start the MLflow tracking server locally, use the following command:
81+
82+
```bash
83+
mlflow ui --port 5000
84+
```
85+
86+
This will launch the MLflow UI on your local machine at `http://localhost:5000`.
87+
88+
<br>
89+
90+
## Quickstart
91+
92+
### Install MLflow.js Library
93+
94+
To use the MLflow.js library, navigate to your project directory and install it via npm:
95+
96+
```bash
97+
npm install mlflow-js
98+
```
99+
100+
### Usage Example
101+
102+
Here is an example of how to use the MLflow.js library to create an experiment:
103+
104+
```JavaScript
105+
import Mlflow from 'mlflow-js';
106+
107+
// Initialize the MLflow client
108+
const mlflow = new Mlflow('http://127.0.0.1:5000');
109+
110+
// Get the experiment client
111+
const experimentClient = mlflow.getExperimentClient();
112+
113+
// Create a new experiment
114+
async function createExperiment(){
115+
try {
116+
await experimentClient.createExperiment('My Experiment');
117+
console.log('Experiment created successfully');
118+
} catch (error) {
119+
console.error('Error creating experiment:', error);
120+
}
121+
}
122+
123+
createExperiment();
124+
```
125+
126+
<br>
127+
128+
## Documentation
129+
130+
Official documentation for MLflow.js can be found <a href="">here</a>.
131+
132+
<br>
133+
134+
## Contributing
135+
136+
We welcome contributions to mlflow.js! Please see our [Contributing Guide](CONTRIBUTING.md) for more details on how to get started.
137+
138+
<br>
139+
140+
## License
141+
142+
[MIT](/LICENSE)
143+
144+
<br>
145+
146+
## Meet The Team
147+
148+
| Name | GitHub | LinkedIn |
149+
| -------------- | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
150+
| Kyler Chiago | [![GitHub](https://img.shields.io/badge/-GitHub-181717?style=flat-square&logo=github)](https://github.com/Kyler-Chiago) | [![LinkedIn](https://img.shields.io/badge/-LinkedIn-0077B5?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/kyler-chiago/) |
151+
| Austin Fraser | [![GitHub](https://img.shields.io/badge/-GitHub-181717?style=flat-square&logo=github)](https://github.com/austinbfraser) | [![LinkedIn](https://img.shields.io/badge/-LinkedIn-0077B5?style=flat-square&logo=linkedin&logoColor=white)](http://www.linkedin.com/in/austin-fraser) |
152+
| Stephany Ho | [![GitHub](https://img.shields.io/badge/-GitHub-181717?style=flat-square&logo=github)](https://github.com/seneyu) | [![LinkedIn](https://img.shields.io/badge/-LinkedIn-0077B5?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/stephanyho/) |
153+
| Winston Ludlam | [![GitHub](https://img.shields.io/badge/-GitHub-181717?style=flat-square&logo=github)](https://github.com/winjolu/) | [![LinkedIn](https://img.shields.io/badge/-LinkedIn-0077B5?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/wjludlam/) |
154+
| Yiqun Zheng | [![GitHub](https://img.shields.io/badge/-GitHub-181717?style=flat-square&logo=github)](https://github.com/yiqunzheng) | [![LinkedIn](https://img.shields.io/badge/-LinkedIn-0077B5?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/yiqunzheng/) |
47 KB
Loading

0 commit comments

Comments
 (0)