base on Determined is an open-source machine learning platform that simplifies distributed training, hyperparameter tuning, experiment tracking, and resource management. Works with PyTorch and TensorFlow. <p align="center"><img width="400" src="determined-logo.svg" alt="Determined AI Logo"></p>
Determined is an all-in-one deep learning platform, compatible with PyTorch and TensorFlow.
It takes care of:
- Distributed training for faster results.
- Hyperparameter tuning for obtaining the best models.
- Resource management for cutting cloud GPU costs.
- Experiment tracking for analysis and reproducibility.
<br/>
<p align="center">
<img alt="Features gif" src="./docs/assets/readme_images/features.gif">
</p>
# How Determined Works
The main components of Determined are the Python library, the command line interface (CLI), and the Web UI.
## Python Library
Use the Python library to make your existing PyTorch or Tensorflow code compatible with Determined.
You can do this by organizing your code into one of the class-based APIs:
```python
from determined.pytorch import PyTorchTrial
class YourExperiment(PyTorchTrial):
def __init__(self, context):
...
```
Or by using just the functions you want, via the Core API:
```python
import determined as det
with det.core.init() as core_context:
...
```
## Command Line Interface (CLI)
You can use the CLI to:
- Start a Determined cluster locally:
```
det deploy local cluster-up
```
- Launch Determined on cloud services, such as Amazon Web Services (AWS) or Google Cloud Platform (GCP):
```
det deploy aws up
```
- Train your models:
```bash
det experiment create gpt.yaml .
```
Configure everything from distributed training to hyperparameter tuning using YAML files:
```yaml
resources:
slots_per_trial: 8
priority: 1
hyperparameters:
learning_rate:
type: double
minval: .0001
maxval: 1.0
searcher:
name: adaptive_asha
metric: validation_loss
smaller_is_better: true
```
## Web UI
Use the Web UI to view loss curves, hyperparameter plots, code and configuration snapshots, model registries, cluster utilization, debugging logs, performance profiling reports, and more.
![Web UI](docs/assets/readme_images/webui.png)
# Installation
To install the CLI:
```bash
pip install determined
```
Then use `det deploy` to start the Determined cluster locally, or on cloud services like AWS and GCP.
For installation details, visit the the cluster deployment guide for your environment:
- [Local (on-prem)](https://docs.determined.ai/latest/setup-cluster/deploy-cluster/on-prem/overview.html)
- [AWS](https://docs.determined.ai/latest/setup-cluster/deploy-cluster/aws/overview.html)
- [GCP](https://docs.determined.ai/latest/setup-cluster/deploy-cluster/gcp/overview.html)
- [Kubernetes](https://docs.determined.ai/latest/setup-cluster/deploy-cluster/k8s/overview.html)
- [Slurm/PBS](https://docs.determined.ai/latest/setup-cluster/deploy-cluster/slurm/overview.html)
# Examples
Get familiar with Determined by exploring the 30+ examples in the [examples folder](https://github.com/determined-ai/determined/tree/main/examples) and the [determined-examples repo](https://github.com/determined-ai/determined-examples).
# Documentation
- [Documentation](https://docs.determined.ai)
- [Quick Start Guide](https://docs.determined.ai/latest/getting-started.html)
- Tutorials:
- [PyTorch MNIST Tutorial](https://docs.determined.ai/latest/tutorials/pytorch-mnist-tutorial.html)
- [TensorFlow Keras MNIST Tutorial](https://docs.determined.ai/latest/tutorials/tf-mnist-tutorial.html)
- User Guides:
- [Core API](https://docs.determined.ai/latest/model-dev-guide/apis-howto/api-core-ug.html)
- [PyTorch API](https://docs.determined.ai/latest/model-dev-guide/apis-howto/api-pytorch-ug.html)
- [Keras API](https://docs.determined.ai/latest/model-dev-guide/apis-howto/api-keras-ug.html)
- [DeepSpeed API](https://docs.determined.ai/latest/model-dev-guide/apis-howto/deepspeed/overview.html)
# Community
If you need help, want to file a bug report, or just want to keep up-to-date
with the latest news about Determined, please join the Determined community!
- [Slack](https://determined-community.slack.com) is the best place to
ask questions about Determined and get support. [Click here to join our Slack](https://determined-community.slack.com).
- You can also follow us on [YouTube](https://www.youtube.com/@DeterminedAI) and [Twitter](https://www.twitter.com/DeterminedAI).
- You can also join the [community mailing list](https://groups.google.com/a/determined.ai/forum/#!forum/community)
to ask questions about the project and receive announcements.
- To report a bug, [open an issue](https://github.com/determined-ai/determined/issues) on GitHub.
- To report a security issue, email [`
[email protected]`](mailto:
[email protected]).
# Contributing
[Contributor's Guide](CONTRIBUTING.md)
# License
[Apache V2](LICENSE)
", Assign "at most 3 tags" to the expected json: {"id":"4529","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"