Metadata-Version: 2.1
Name: MLXP
Version: 0.1.0
Summary: A framework for conducting machine learning experiments in python
Home-page: https://github.com/MichaelArbel/mlxp
Author: Michael Arbel
Author-email: michael.n.arbel@gmail.com
License: MIT License
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.8
Description-Content-Type: text/x-rst
Requires-Dist: hydra-core (>=1.3.2)
Requires-Dist: omegaconf (>=2.2.3)
Requires-Dist: dill (>=0.3.6)
Requires-Dist: GitPython (>=3.1.31)
Requires-Dist: pandas (>=1.3.4)
Requires-Dist: ply (>=3.11)
Requires-Dist: PyYAML (>=6.0)
Requires-Dist: tinydb (>=4.7.1)

Introduction
^^^^^^^^^^^^

MLXP (Machine Learning eXperiments Python) package is an open-source Python framework for managing multiple experiments with a flexible option structure from launching, and logging to querying results. A full documentation is available in the `MLXP's official  documentation website <https://michaelarbel.github.io/mlxp/>`_. 



Key functionalities
^^^^^^^^^^^^^^^^^^^

1. Launching several jobs automatically using `hydra <https://hydra.cc/>`_ and hierarchical configs by adding a single decorator to the main task function.   
2. Logging outputs (metrics, artifacts, checkpoints) of a job in a uniquely assigned directory along with all metadata and configuration options to reproduce the experiment.
3. Code version management by automatically generating a deployment version of the code based on the latest git commit. 
4. Submitting jobs to a cluster using a job scheduler. 
5. Exploiting the results of several experiments by easily reading, querying, grouping, and aggregating the output of several jobs. 


License
^^^^^^^

MLXP is distributed under MIT license.

Citing MLXP
^^^^^^^^^^^^

Even though this is non-legally binding, the author kindly ask users to cite MLXP in their publications if they use 
it in their research as follows:


.. code-block:: bibtex 

   @Misc{Arbel2023MLXP,
     author = {Michae Arbel},
     title = {MLXP: },
     howpublished = {Github},
     year = {2023},
     url = {https://github.com/MichaelArbel/mlxp}
   }


Installing MLXP
^^^^^^^^^^^^^^^^

You can install MLXP either from PyPI or by cloning the GitHub.


From PyPI
---------

You can simply run the following command:

.. code-block:: console

   $ pip install MLXP


From GitHub
-----------

You can install this package by cloning it from the GitHub repository
and then installing it with `pip`. 


1. Clone the repository:

.. code-block:: console

   $ git clone git@github.com:MichaelArbel/mlxp.git

2. Change to the package directory:

.. code-block:: console

   $ cd mlxp

3. Install the requirements using `pip`:

.. code-block:: console

   $ pip install -r requirements.txt

4. Install the package:

.. code-block:: console

   $ pip install .

Note: You may need to use `pip3` instead of `pip` depending on your setup.




Before installing MLXP, make sure you the requirements are installed.


Requirements
------------


.. list-table::
   :header-rows: 1
   :class: left

   * - Requirements
   * - hydra-core
   * - omegaconf
   * - tinydb
   * - setuptools
   * - PyYAML
   * - pandas
   * - ply
   * - dill
   * - GitPython


Acknowledgments
^^^^^^^^^^^^^^^

I would like to acknowledge the following contributors for their contributions to the development of this package:

- `Alexandre Zouaoui <https://azouaoui.me/>`_ kindly shared his python implementation for creating job scripts and submiting them to a cluster. His code served as the basis for the implementation of the Scheduler class. While I have significantly modified the process of job submission, by integrating it with MLXpy's launching functionality, I am grateful for Alexandre's contribution which were invaluable to the development of this project.


- `Juliette Marrie <https://www.linkedin.com/in/juliette-marrie-5b8a59179/?originalSubdomain=fr>`_ tested a premature version of MLXP. I am grateful for her feedback which was extremetly helpful for shaping and improving MLXP's functionalities.  

- `Romain Ménégaux <https://www.linkedin.com/in/romain-menegaux-88a147134/?originalSubdomain=fr>`_ provided valuable feedback and suggestions to improve MLXP. He also found and reported several bugs in the software which helped improve its quality and stability. 









