machine-learning-exchange/mlx

Publish MLX API Client to PyPI

Opened this issue · 5 comments

Enable 3rd party applications to interact with the MLX API server.

pip install mlx-...

The MLX name is already taken on PyPI, so we could decide between:

  • mlx-client
  • mlx-api
  • mlx-api-client
  • ml-exchange

@romeokienzler @Tomcli @animeshsingh

@romeokienzler -- I updated the api/client/README.md with instructions to install the MLX API client directly from GitHub

pip install "git+https://github.com/machine-learning-exchange/mlx.git@main#egg=mlx-client&subdirectory=api/client"

@romeokienzler -- here are a few commands to test the pip install

# create a temporary directory
mkdir temp
cd temp

# create Python virtual environment
python3 -m venv .venv_mlx_client

# activate the virtual environment
source .venv_mlx_client/bin/activate

# install the MLX client
pip install "git+https://github.com/machine-learning-exchange/mlx.git@main#egg=mlx-client&subdirectory=api/client"

# show all the installed Python packages (should include "mlx-client      0.1.27-pipeline-namespace")
pip list

# run a simple Python command to show the mlx-client install location
python3 -c "import swagger_client; print('\nMLX Client is installed here: ' + swagger_client.__file__ + '\n')"

... and with output:

$ mkdir temp

$ cd temp

$ python3 -m venv .venv_mlx_client

$ source .venv_mlx_client/bin/activate

(.venv_mlx_client) $ pip install "git+https://github.com/machine-learning-exchange/mlx.git@main#egg=mlx-client&subdirectory=api/client"

Collecting mlx-client from git+https://github.com/machine-learning-exchange/mlx.git@main#egg=mlx-client&subdirectory=api/client
  Cloning https://github.com/machine-learning-exchange/mlx.git (to revision main) to /private/var/folders/44/7gxds1zd4gv87qgfhtsw_bcm0000gn/T/pip-install-o7gidgxn/mlx-client
  Running command git clone -q https://github.com/machine-learning-exchange/mlx.git /private/var/folders/44/7gxds1zd4gv87qgfhtsw_bcm0000gn/T/pip-install-o7gidgxn/mlx-client
Collecting certifi>=2017.4.17 (from mlx-client)
  Using cached https://files.pythonhosted.org/packages/05/1b/0a0dece0e8aa492a6ec9e4ad2fe366b511558cdc73fd3abc82ba7348e875/certifi-2021.5.30-py2.py3-none-any.whl
Collecting python-dateutil>=2.1 (from mlx-client)
  Using cached https://files.pythonhosted.org/packages/d4/70/d60450c3dd48ef87586924207ae8907090de0b306af2bce5d134d78615cb/python_dateutil-2.8.1-py2.py3-none-any.whl
Collecting six>=1.10 (from mlx-client)
  Using cached https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl
Collecting urllib3>=1.23 (from mlx-client)
  Using cached https://files.pythonhosted.org/packages/0c/cd/1e2ec680ec7b09846dc6e605f5a7709dfb9d7128e51a026e7154e18a234e/urllib3-1.26.5-py2.py3-none-any.whl
Installing collected packages: certifi, six, python-dateutil, urllib3, mlx-client
  Running setup.py install for mlx-client ... done
Successfully installed certifi-2021.5.30 mlx-client-0.1.27-pipeline-namespace python-dateutil-2.8.1 six-1.16.0 urllib3-1.26.5


(.venv_mlx_client) $ pip list

Package         Version                  
--------------- -------------------------
certifi         2021.5.30                
mlx-client      0.1.27-pipeline-namespace
pip             19.2.3                   
python-dateutil 2.8.1                    
setuptools      41.2.0                   
six             1.16.0                   
urllib3         1.26.5                   


(.venv_mlx_client) $ python3 -c "import swagger_client; print('\nMLX Client is installed here: ' + swagger_client.__file__ + '\n')"

MLX Client is installed here: /Users/ckadner/Temp/temp/.venv_mlx_client/lib/python3.7/site-packages/swagger_client/__init__.py

@ptitzler -- let me know if/when you will need to use a MLX API Client SDK for pulling MLX assets into Elyra. I think using a Python SDK rather than using the REST API endpoints would be preferable.

There is some clean-up work to be done before we can publish the MLX API Client to PyPI.

No rush. The poc surfaced some design issues that we need to tackle first before we can properly support reading from remote catalogs.