Skip to content

Commit 40ee8b7

Browse files
committed
Merge branch 'dev' into stephany/github-actions-3
2 parents 43809db + dfe0603 commit 40ee8b7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+5682
-1464
lines changed

.github/README.md

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
<div style="text-align: center">
2+
<img src="../mlflow-site/public/assets/mlflow-js-logo-whitebg.png" width=600px;"/></div>
3+
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-87%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 JavaScript library that helps developers track machine learning experiments and manage models with MLflow, providing functionalities for machine learning lifecycle in JavaScript/TypeScript environments.
15+
16+
<br>
17+
18+
## Features
19+
20+
<i>MLflow.js</i> covers all REST API endpoints under MLflow's Tracking Server and Model Registry. Moreover, high-level abstractions have been developed to facilitate developers' common ML workflows. It provides some key advantages:
21+
22+
- Native JavaScript Integration: Seamlessly integrate MLflow capabilities within JavaScript codebases
23+
- Type Safety: Built with TypeScript for enhanced developer experience and code reliability
24+
- Modular Architecture: Designed with object-oriented structure that mirrors MLflow's concepts while being extensible and maintainable
25+
- Client-side ML Compatibility: Complements popular JavaScript libraries like TensorFlow.js, enabling ML deployment directly in the browser or client side
26+
27+
<br>
28+
29+
## Built with
30+
31+
[![TypeScript](https://img.shields.io/badge/TypeScript-0077B5?style=for-the-badge&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
32+
[![JavaScript](https://img.shields.io/badge/JavaScript-000435?style=for-the-badge&logo=javascript&logoColor=00fff)](https://www.javascript.com/)
33+
[![React](https://img.shields.io/badge/React-36454F?style=for-the-badge&logo=React&logoColor=00fff)](https://react.dev/)
34+
[![Next.js](https://img.shields.io/badge/Next.js-24292e?style=for-the-badge&logo=next.js&logoColor=00fff)](https://nextjs.org/)
35+
[![TailwindCSS](https://img.shields.io/badge/Tailwind_CSS-008080?style=for-the-badge&logo=tailwindcss&logoColor=bfffff)](https://tailwindcss.com/)
36+
[![ESLINT](https://img.shields.io/badge/ESLINT-4B32C3?style=for-the-badge&logo=eslint&logoColor=bfffff)](https://eslint.org/)
37+
[![Node.js](https://img.shields.io/badge/Node.js-339933?style=for-the-badge&logo=node.js&logoColor=ffffff)](https://nodejs.org/en/)
38+
[![Jest](https://img.shields.io/badge/Jest-800020?style=for-the-badge&logo=jest&logoColor=00fff)](https://jestjs.io/)
39+
[![GitHub Actions](https://img.shields.io/badge/GitHub_Actions-30363d?style=for-the-badge&logo=github&logoColor=00fff)](https://github.com/features/actions)
40+
[![Docker](https://img.shields.io/badge/Docker-lightblue?style=for-the-badge&logo=Docker&logoColor=00fff)](https://www.docker.com/)
41+
[![NPM](https://img.shields.io/badge/NPM-CC3534?style=for-the-badge&logo=npm&logoColor=00fff)](https://www.npmjs.com/)
42+
[![Vercel](https://img.shields.io/badge/Vercel-966FD6?style=for-the-badge&logo=Vercel&logoColor=00fff)](https://vercel.com/)
43+
44+
<br>
45+
46+
## Prerequisites
47+
48+
### Set Up MLflow
49+
50+
Ensure MLflow is installed on your system:
51+
52+
```bash
53+
pip install mlflow
54+
```
55+
56+
**Note:** MLflow is compatible with MacOS. If you encounter 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`.
57+
58+
### Start the MLflow Tracking Server
59+
60+
To start the MLflow tracking server locally, use the following command:
61+
62+
```bash
63+
mlflow ui --port 5000
64+
```
65+
66+
This will launch the MLflow UI on your local machine at `http://localhost:5000`.
67+
68+
### Development Setup
69+
For development environment setup instructions, please refer to our [Contributing Guide](../CONTRIBUTING.md).
70+
71+
<br>
72+
73+
## Quickstart
74+
75+
### Install <i>mlflow.js</i> Library
76+
77+
To use the <i>mlflow.js</i> library, navigate to your project directory and install it via npm:
78+
79+
```bash
80+
npm install mlflow-js
81+
```
82+
83+
### Usage Example
84+
85+
Here is an example of how to use the <i>mlflow.js</i> library to create an experiment:
86+
87+
```JavaScript
88+
import Mlflow from 'mlflow-js';
89+
90+
// Initialize the MLflow client
91+
const mlflow = new Mlflow(process.env.MLFLOW_TRACKING_URI);
92+
93+
// Create a new experiment
94+
async function createExperiment(){
95+
await mlflow.createExperiment('My Experiment');
96+
console.log('Experiment created successfully');
97+
}
98+
99+
createExperiment();
100+
101+
```
102+
<br>
103+
104+
## Resources
105+
- [Example Repository](https://github.com/oslabs-beta/mlflow-js/tree/dev/mlflow/examples) - Practical examples demonstrating MLflow.js’s functionality
106+
- [Quick Tutorials](https://www.mlflow-js.org/) - Video walkthrough of the example code with MLflow UI
107+
- [Read our Medium Article](link) - Overview on why we built MLflow.js and how it enhances ML workflows in JavaScript environments
108+
109+
<br>
110+
111+
## Documentation
112+
113+
Official documentation for <i>MLflow.js</i> can be found <a href="https://www.mlflow-js.org/documentation">here</a>.
114+
115+
### High-Level Workflows
116+
117+
**Experiment Manager**
118+
119+
- 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
120+
- runNewExperiment - Full workflow of creating, naming, and starting a run under a new experiment, logging metrics, params, tags, and the model, and finishing the run
121+
- experimentSummary - Returns an array of all the passed-in experiment's runs, sorted according to the passed-in metric
122+
123+
**Run Manager**
124+
125+
- cleanupRuns - Deletes runs that do not meet certain criteria and return an object of deleted runs and details
126+
- copyRun - Copies a run from one experiment to another (without artifacts and models)
127+
128+
**Model Manager**
129+
130+
- createRegisteredModelWithVersion - Creates a new registered model and the first version of that model
131+
- updateRegisteredModelDescriptionAndTag - Updates a registered model's description and tags
132+
- updateAllLatestModelVersion - Updates the latest version of the specified registered model's description, adds a new alias, and tag key/value for the latest version
133+
- setLatestModelVersionTag - Adds a new tag key/value for the latest version of the specified registered model
134+
- setLatestModelVersionAlias - Adds an alias for the latest version of the specified registered model
135+
- updateLatestModelVersion - Updates the description of the latest version of a registered model
136+
- updateAllModelVersion - Updates the specified version of the specified registered model's description and adds a new alias and tag key/value for that specified version
137+
- deleteLatestModelVersion - Deletes the latest version of the specified registered model
138+
- createModelFromRunWithBestMetric - Creates a new model with the specified model name from the run with the best specified metric
139+
140+
<br>
141+
142+
## Contributing
143+
144+
We welcome contributions to <i>MLflow.js</i>! Please see our [Contributing Guide](../CONTRIBUTING.md) for more details on how to get started.
145+
146+
<br>
147+
148+
## License
149+
150+
[MIT License](../LICENSE)
151+
152+
<br>
153+
154+
## Meet The Team
155+
156+
| Name | GitHub | LinkedIn |
157+
| -------------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
158+
| Yiqun Zheng | [![GitHub](https://img.shields.io/badge/GitHub-181717?style=for-the-badge&logo=github)](https://github.com/yiqunzheng) | [![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/yiqunzheng/) |
159+
| Kyler Chiago | [![GitHub](https://img.shields.io/badge/GitHub-181717?style=for-the-badge&logo=github)](https://github.com/Kyler-Chiago) | [![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/kyler-chiago/) |
160+
| Austin Fraser | [![GitHub](https://img.shields.io/badge/GitHub-181717?style=for-the-badge&logo=github)](https://github.com/austinbfraser) | [![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](http://www.linkedin.com/in/austin-fraser) |
161+
| Stephany Ho | [![GitHub](https://img.shields.io/badge/GitHub-181717?style=for-the-badge&logo=github)](https://github.com/seneyu) | [![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/stephanyho/) |
162+
| Winston Ludlam | [![GitHub](https://img.shields.io/badge/GitHub-181717?style=for-the-badge&logo=github)](https://github.com/winjolu/) | [![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/wjludlam/) |

CONTRIBUTING.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
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. Create your feature branch
20+
21+
```bash
22+
git checkout -b feature/AmazingFeature
23+
```
24+
25+
5. Run MLflow Tracking Server container with Docker
26+
27+
```bash
28+
cd mlflow
29+
npm run docker
30+
```
31+
32+
6. Make your changes
33+
34+
7. Run ESLint to check code style
35+
36+
```bash
37+
npm run lint
38+
```
39+
40+
8. Run tests to ensure your changes don't break existing functionality
41+
42+
(Make sure you have mlflow UI server running on port 5002. We set 5002 as our default port for testing.)
43+
44+
```bash
45+
mlflow ui --port 5002 # Run this in a separate terminal
46+
npm run test
47+
```
48+
49+
9. Commit your changes
50+
51+
```bash
52+
git commit -m 'Add AmazingFeature'
53+
```
54+
55+
10. Push to the branch
56+
57+
```bash
58+
git push origin feature/AmazingFeature
59+
```
60+
61+
11. Open a Pull Request
62+
63+
**Note:** Please ensure your code adheres to our style guidelines and includes appropriate documentation for any new features.

README.md

Lines changed: 0 additions & 1 deletion
This file was deleted.
19.9 KB
Loading
18.8 KB
Loading
456 KB
Loading
47 KB
Loading
323 KB
Loading
523 KB
Loading
100 KB
Loading

0 commit comments

Comments
 (0)