Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

馃悤 Batch: Define Model Installs through a YAML file instead of a Dockerfile #1159

Open
3 tasks
DhanshreeA opened this issue Jun 13, 2024 · 2 comments
Open
3 tasks
Assignees
Labels
enhancement New feature or request high High priority issue affecting core functionality but not a blocker

Comments

@DhanshreeA
Copy link
Member

DhanshreeA commented Jun 13, 2024

Summary

This task is related to the new and improved packing strategy in Ersilia that aims to remove several anti-patterns in how Ersilia models are packaged currently (ref: #1137 #1138). In the present approach, a model's dependencies are specified as a Dockerfile which is then parsed through the Ersilia CLI to create a set of installation instructions for the model's environment. This approach is grossly misleading because this Dockerfile only serves as a dependency spec and not as a set of build instructions for the model's image.

Ersilia is moving away from this approach to utilizing YAML as the appropriate standard for dependency management.

Objective(s)

  • Standardize YAML structure and syntax for specifying model dependencies
  • Document this structure in the new EOS Template 馃悤 Batch: New EOS Template聽#1139
  • Write a parser within Ersilia Pack that converts this specification file into an installation executable for the model.

Documentation

No response

@DhanshreeA DhanshreeA self-assigned this Jun 13, 2024
@DhanshreeA
Copy link
Member Author

DhanshreeA commented Jun 19, 2024

Work in Progress sample of such a YAML file:

python: 3.x.x # Numeric input separated by dot
dependencies:
    - conda: # list
        - conda -c channel dep1=x.x.x  # Version 1
        - ["rdkit", "conda-forge"] # Version 2
        - ["git-lfs", "0.1.1", "default"] # Version 3
    - pip
        - dep1=x.x.x # pip expects == however
        - dep2='^x.x.x'
        - dep3='~x.x.x'
        - dep4='<=x.x.x' # same for >=
        - ["dep", "x.x.x"]
    # We will have to urge the users to keep an order? Not sure
    # Also it'll be work to understand if there are any conda reqs in this list
    - conda install dep -c channel 
    - pip install dep==1.1.1 
# This is a combination of system-commands and dependencies
# We will know there is conda if there's a list with 4 elements
# Forces users to write version, and channel in the case of conda
commands:
    - any:
        - ["pip", "rdkit", "2023.09"]
        - ["pip", "openai", "x.x.x"]
        - ["conda", "git-lfs", "x.x.x", "conda-forge"]
        - "sudo apt-get ..."
        - ["pip", "pyairtable", "x.x.x"]
    - osx:
        - "...."
    - linux:
        - "..."
 commands:
  - osx-cpu:
      - ["pip", "pytorch", "1.1", "https://....-cpu..."]
  - osx-gpu:
      - ["pip", "pytorch", "1.1", "https://...-gpu..."]
platform: ['osx', 'linux'] # list with only these acceptable values - This needs to be more comprehensive, since we want to specify which linux - debian/suse whatever, and osx-intel or osx with m chips 
runtime/hardware/compute: ['cpu', 'gpu'] # This would lead to a matrix of depedencies for cpu and gpu

# We're better off calling this system commands or something that reflects that bec these are not 'extra'
# Type 1 is preferable to type 3
extra_requires_type1:
    - any:
        - ....
        - ....
    - osx:
        - cmd1
        - cmd2
    - linux:
        - cmd1 opt1 opt2
        - cmd2

extra_requires_type3:
    - osx: 
        - ["cmd1", "op1", "op2"]
        - ["cmd1", "op1", "op2"]
    - linux: 
        - ["cmd1", "op1", "op2"]
        - ["cmd1", "op1", "op2"]

@DhanshreeA DhanshreeA changed the title 馃悎 Task: Define Model Installs through a YAML file instead of a Dockerfile 馃悤 Batch: Define Model Installs through a YAML file instead of a Dockerfile Jun 24, 2024
@DhanshreeA
Copy link
Member Author

This issue is basically a duplicate of #743

@DhanshreeA DhanshreeA added enhancement New feature or request high High priority issue affecting core functionality but not a blocker labels Jun 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request high High priority issue affecting core functionality but not a blocker
Projects
Status: In Progress
Development

No branches or pull requests

1 participant