model server build (#127)

* first commit to have model_server not be dependent on Docker

* making changes to fix the docker-compose file for archgw to set DNS_V4 and minor fixes with the build

* additional fixes for model server to be separated out in the build

* additional fixes for model server to be separated out in the build

* fix to get model_server to be built as a separate python process. TODO: fix the embeddings logs after cli completes

* fixing init to pull tempfile using the tempfile python package

---------

Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-261.local>
This commit is contained in:
Salman Paracha 2024-10-06 18:21:43 -07:00 committed by GitHub
parent 7d21359f5b
commit b60ceb9168
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 3390 additions and 154 deletions

View file

@ -5,7 +5,7 @@ import config_generator
import pkg_resources
import sys
import subprocess
from core import start_arch, stop_arch
from core import start_arch_modelserver, stop_arch_modelserver, start_arch, stop_arch
from utils import get_llm_provider_access_keys, load_env_file_to_dict
logo = r"""
@ -26,7 +26,7 @@ def main(ctx):
# Command to build archgw and model_server Docker images
ARCHGW_DOCKERFILE = "./arch/Dockerfile"
MODEL_SERVER_DOCKERFILE = "./model_server/Dockerfile"
MODEL_SERVER_BUILD_FILE = "./model_server/pyproject.toml"
@click.command()
def build():
@ -44,21 +44,22 @@ def build():
click.echo("Error: Dockerfile not found in /arch")
sys.exit(1)
# Check if /model_server/Dockerfile exists
if os.path.exists(MODEL_SERVER_DOCKERFILE):
click.echo("Building model_server image...")
click.echo("All images built successfully.")
"""Install the model server dependencies using Poetry."""
# Check if pyproject.toml exists
if os.path.exists(MODEL_SERVER_BUILD_FILE):
click.echo("Installing model server dependencies with Poetry...")
try:
subprocess.run(["docker", "build", "-f", MODEL_SERVER_DOCKERFILE, "-t", "model_server:latest", "./model_server"], check=True)
click.echo("model_server image built successfully.")
subprocess.run(["poetry", "install", "--no-cache"], cwd=os.path.dirname(MODEL_SERVER_BUILD_FILE), check=True)
click.echo("Model server dependencies installed successfully.")
except subprocess.CalledProcessError as e:
click.echo(f"Error building model_server image: {e}")
click.echo(f"Error installing model server dependencies: {e}")
sys.exit(1)
else:
click.echo("Error: Dockerfile not found in /model_server")
click.echo(f"Error: pyproject.toml not found in {MODEL_SERVER_BUILD_FILE}")
sys.exit(1)
click.echo("All images built successfully.")
@click.command()
@click.argument('file', required=False) # Optional file argument
@click.option('-path', default='.', help='Path to the directory containing arch_config.yml')
@ -120,11 +121,14 @@ def up(file, path):
env = os.environ.copy()
env.update(env_stage)
env['ARCH_CONFIG_FILE'] = arch_config_file
start_arch_modelserver()
start_arch(arch_config_file, env)
@click.command()
def down():
"""Stops Arch."""
stop_arch_modelserver()
stop_arch()
@click.command()