Metadata-Version: 2.4
Name: cairnml
Version: 0.0.1
Summary: CairnML - experiment tracking, remote jobs and git-based datasets (an unofficial fork of ClearML)
Home-page: https://github.com/gianlucapargaetzi/cairnml
Author: Gianluca Pargaetzi
Author-email: 121188387+gianlucapargaetzi@users.noreply.github.com
License: Apache License 2.0
Keywords: cairnml clearml development machine deep learning version control machine-learning machinelearning deeplearning deep-learning experiment-manager experimentmanager
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Version Control
Classifier: Topic :: System :: Logging
Classifier: Topic :: System :: Monitoring
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: License :: OSI Approved :: Apache Software License
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
Requires-Dist: attrs>=18.0
Requires-Dist: furl>=2.0.0
Requires-Dist: jsonschema>=2.6.0
Requires-Dist: numpy<1.20,>=1.19.5; python_version < "3.7"
Requires-Dist: numpy<1.22,>=1.21.6; python_version >= "3.7" and python_version < "3.8"
Requires-Dist: numpy<1.25,>=1.24.4; python_version >= "3.8" and python_version < "3.9"
Requires-Dist: numpy>=1.26.4; python_version >= "3.9"
Requires-Dist: pathlib2>=2.3.0
Requires-Dist: Pillow>=7.0.0; python_version < "3.8"
Requires-Dist: Pillow>=10.3.0; python_version >= "3.8"
Requires-Dist: psutil>=3.4.2
Requires-Dist: pyparsing>=2.0.3
Requires-Dist: python-dateutil>=2.6.1
Requires-Dist: pyjwt<3.0.0,>=2.4.0
Requires-Dist: PyYAML>=3.12
Requires-Dist: referencing<0.40; python_version >= "3.8"
Requires-Dist: requests>=2.20.0; python_version < "3.8"
Requires-Dist: requests>=2.32.0; python_version >= "3.8"
Requires-Dist: six>=1.16.0
Requires-Dist: urllib3>=1.21.1
Requires-Dist: cryptography>=43.0.0
Provides-Extra: s3
Requires-Dist: boto3>=1.9; extra == "s3"
Provides-Extra: azure
Requires-Dist: azure-storage-blob>=12.0.0; extra == "azure"
Provides-Extra: gs
Requires-Dist: google-cloud-storage>=1.13.2; extra == "gs"
Provides-Extra: dataset
Requires-Dist: dvc[s3]>=3.50; extra == "dataset"
Requires-Dist: pyarrow>=14; extra == "dataset"
Provides-Extra: router
Requires-Dist: fastapi>=0.115.2; extra == "router"
Requires-Dist: uvicorn>=0.31.1; extra == "router"
Requires-Dist: httpx>=0.27.2; extra == "router"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: summary

# CairnML

CairnML records what your training scripts do (parameters, metrics, logs, artifacts), runs them on remote machines through job queues, and versions datasets with git and DVC so every run records the exact data it used.

This is the Python SDK. It needs a CairnML server (see [cairnml-server](https://github.com/gianlucapargaetzi/cairnml-server) and the [deployment files](https://github.com/gianlucapargaetzi/cairnml-stack)).

CairnML is an unofficial, modified version of [ClearML](https://github.com/clearml/clearml). It is not created, sponsored, endorsed or supported by ClearML, Inc. See [DISCLAIMER.md](DISCLAIMER.md) and [NOTICE](NOTICE).

## Install

```bash
pip install cairnml
pip install "cairnml[dataset]"   # adds the dataset tools (DVC, Parquet)
```

## Use

Sign this machine in to your server once:

```bash
cairnml-init --server https://your-server:8008
```

Track a script:

```python
from cairnml import Task

task = Task.init(project_name="demo", task_name="first run")
task.connect({"lr": 0.001})
task.get_logger().report_scalar("loss", "train", value=0.5, iteration=1)
```

Run a recorded task on an agent ([cairnml-agent](https://pypi.org/project/cairnml-agent/)):

```python
Task.enqueue(task, queue_name="default")
```

Version a dataset (a dataset is a git repository, its commit is its version):

```bash
cairnml-dataset init
cairnml-dataset add
cairnml-dataset commit -m "March measurements"
cairnml-dataset push
```

See [docs/datasets.md](docs/datasets.md) for datasets, adapters and the cache.

## License

Apache License 2.0, see [LICENSE](LICENSE). Based on ClearML, Copyright 2025 ClearML Inc.
