diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index aab25fc..e05d6f0 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -55,7 +55,7 @@ jobs: id: build-and-push uses: docker/build-push-action@v3.1.1 with: - file: deployment/Dockerfile + file: Dockerfile context: . push: ${{ github.event_name != 'pull_request' }} tags: | diff --git a/deployment/Dockerfile b/Dockerfile similarity index 100% rename from deployment/Dockerfile rename to Dockerfile diff --git a/Makefile b/Makefile index 106e29a..1427b0f 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ $(PRE_COMMIT_HOOK): poetry run pre-commit install --install-hooks $(LOCAL_MODEL): - poetry run python scripts/huggingface_gptneox_convert.py \ + poetry run python -m tabby.tools.huggingface_gptneox_convert \ -in_file EleutherAI/pythia-70m-deduped \ -o $@ \ -i_g 1 -m_n tiny-70M -p 1 -w fp16 diff --git a/deployment/config/dags/train.yaml b/deployment/config/dags/train.yaml deleted file mode 100644 index cd66e8c..0000000 --- a/deployment/config/dags/train.yaml +++ /dev/null @@ -1,20 +0,0 @@ -schedule: "5 4 * * *" # Run at 04:05. - -env: - - APP_DIR: /app -steps: - - name: Create job dir - command: mktemp -d /tmp/job.XXXXX - output: JOB_DIR - - - name: Fetch source code - dir: $APP_DIR - command: python scripts/download_project.py --url http://download.savannah.gnu.org/releases/tinycc/tcc-0.9.24.tar.bz2 --output_dir $JOB_DIR/repository - depends: - - Create job dir - - - name: Generate dataset - dir: ${APP_DIR} - command: python scripts/preprocess/preprocess_project.py --project_dir $JOB_DIR/repository --output_dir $JOB_DIR/dataset - depends: - - Fetch source code diff --git a/deployment/config/dags/trainer.yaml b/deployment/config/dags/trainer.yaml new file mode 100644 index 0000000..a699f78 --- /dev/null +++ b/deployment/config/dags/trainer.yaml @@ -0,0 +1,20 @@ +schedule: "5 4 * * *" # Run at 04:05. + +env: + - APP_DIR: /app +steps: + - name: Create job dir + command: mktemp -d /tmp/job.XXXXX + output: JOB_DIR + + - name: Fetch source code + dir: $APP_DIR + command: python -m tabby.tools.download_project --url http://download.savannah.gnu.org/releases/tinycc/tcc-0.9.24.tar.bz2 --output_dir $JOB_DIR/repository + depends: + - Create job dir + + - name: Generate dataset + dir: $APP_DIR + command: python -m tabby.tools.preprocess.preprocess_project --project_dir $JOB_DIR/repository --output_dir $JOB_DIR/dataset + depends: + - Fetch source code diff --git a/deployment/docker-compose.dev.yml b/deployment/docker-compose.dev.yml index 9a2e5d2..b8752fa 100644 --- a/deployment/docker-compose.dev.yml +++ b/deployment/docker-compose.dev.yml @@ -4,15 +4,14 @@ services: server: build: context: .. - dockerfile: ./deployment/Dockerfile args: PYPI_INDEX_URL: https://pypi.tuna.tsinghua.edu.cn/simple - command: uvicorn app:app --host 0.0.0.0 --port 5000 --reload + command: uvicorn tabby.server:app --host 0.0.0.0 --port 5000 --reload volumes: - ../:/app admin: - command: streamlit run --server.runOnSave=true Home.py + command: streamlit run --server.runOnSave=true tabby/admin/Home.py volumes: - ../:/app diff --git a/deployment/docker-compose.yml b/deployment/docker-compose.yml index 83092c9..8ebf0f7 100644 --- a/deployment/docker-compose.yml +++ b/deployment/docker-compose.yml @@ -4,8 +4,7 @@ services: server: image: tabbyml/tabby container_name: tabby-server - working_dir: /app/server - command: uvicorn app:app --host 0.0.0.0 --port 5000 + command: uvicorn tabby.server:app --host 0.0.0.0 --port 5000 environment: - PYTHON_MODEL_NAME=EleutherAI/pythia-70m-deduped - EVENTS_LOG_DIR=/logs/tabby-server @@ -14,14 +13,11 @@ services: volumes: - ./data/logs:/logs - ./data/hf_cache:/root/.cache/huggingface - links: - - vector admin: image: tabbyml/tabby container_name: tabby-admin - working_dir: /app/admin - command: streamlit run Home.py + command: streamlit run tabby/admin/Home.py ports: - "8501:8501" links: diff --git a/admin/Home.py b/tabby/admin/Home.py similarity index 100% rename from admin/Home.py rename to tabby/admin/Home.py diff --git a/admin/utils/__init__.py b/tabby/admin/utils/__init__.py similarity index 100% rename from admin/utils/__init__.py rename to tabby/admin/utils/__init__.py diff --git a/admin/utils/service_info.py b/tabby/admin/utils/service_info.py similarity index 100% rename from admin/utils/service_info.py rename to tabby/admin/utils/service_info.py diff --git a/server/app.py b/tabby/server/__init__.py similarity index 82% rename from server/app.py rename to tabby/server/__init__.py index 8ac9cec..bdd7181 100644 --- a/server/app.py +++ b/tabby/server/__init__.py @@ -1,13 +1,14 @@ import logging import os -import events import uvicorn from fastapi import FastAPI, Response from fastapi.responses import JSONResponse -from models import CompletionRequest, CompletionResponse -from python import PythonModelService -from triton import TritonService + +from . import events +from .models import CompletionRequest, CompletionResponse +from .python import PythonModelService +from .triton import TritonService app = FastAPI( title="TabbyServer", @@ -38,7 +39,3 @@ async def completions(request: CompletionRequest) -> CompletionResponse: async def selection(id: str, index: int) -> JSONResponse: events.log_selection(id, index) return JSONResponse(content="ok") - - -if __name__ == "__main__": - uvicorn.run("app:app", host="0.0.0.0", port=5000) diff --git a/server/events.py b/tabby/server/events.py similarity index 97% rename from server/events.py rename to tabby/server/events.py index 8b67c38..9ebd7e4 100644 --- a/server/events.py +++ b/tabby/server/events.py @@ -3,10 +3,11 @@ import os import shutil from typing import List -import models from loguru import logger from pydantic import BaseModel +from . import models + logger.configure(handlers=[]) diff --git a/server/models.py b/tabby/server/models.py similarity index 100% rename from server/models.py rename to tabby/server/models.py diff --git a/server/python.py b/tabby/server/python.py similarity index 94% rename from server/python.py rename to tabby/server/python.py index bd08fc3..1851bd6 100644 --- a/server/python.py +++ b/tabby/server/python.py @@ -3,9 +3,10 @@ import string import time from typing import List -from models import Choice, CompletionRequest, CompletionResponse from transformers import AutoModelForCausalLM, AutoTokenizer +from .models import Choice, CompletionRequest, CompletionResponse + class PythonModelService: def __init__( diff --git a/server/triton.py b/tabby/server/triton.py similarity index 98% rename from server/triton.py rename to tabby/server/triton.py index 81c6b7a..774578f 100644 --- a/server/triton.py +++ b/tabby/server/triton.py @@ -6,10 +6,11 @@ from typing import List import numpy as np import tritonclient.grpc as client_util -from models import Choice, CompletionRequest, CompletionResponse from transformers import AutoTokenizer from tritonclient.utils import InferenceServerException, np_to_triton_dtype +from .models import Choice, CompletionRequest, CompletionResponse + class TritonService: def __init__( diff --git a/scripts/download_project.py b/tabby/tools/download_project.py similarity index 97% rename from scripts/download_project.py rename to tabby/tools/download_project.py index 6460bfe..02d5c5b 100644 --- a/scripts/download_project.py +++ b/tabby/tools/download_project.py @@ -6,7 +6,7 @@ import requests from transformers import HfArgumentParser -@dataclass(kw_only=True) +@dataclass class DownloaderArgs: url: str = field(metadata={"help": "URL to source code tar.gz file"}) output_dir: str = field(metadata={"help": "Output save path directory"}) diff --git a/scripts/huggingface_gptneox_convert.py b/tabby/tools/huggingface_gptneox_convert.py similarity index 100% rename from scripts/huggingface_gptneox_convert.py rename to tabby/tools/huggingface_gptneox_convert.py diff --git a/scripts/preprocess/args.py b/tabby/tools/preprocess/args.py similarity index 100% rename from scripts/preprocess/args.py rename to tabby/tools/preprocess/args.py diff --git a/scripts/preprocess/filters.py b/tabby/tools/preprocess/filters.py similarity index 93% rename from scripts/preprocess/filters.py rename to tabby/tools/preprocess/filters.py index 5506239..11c7fe3 100644 --- a/scripts/preprocess/filters.py +++ b/tabby/tools/preprocess/filters.py @@ -1,4 +1,4 @@ -from args import FilterArgs +from .args import FilterArgs def basic_filters(args: FilterArgs): diff --git a/scripts/preprocess/metrics.py b/tabby/tools/preprocess/metrics.py similarity index 100% rename from scripts/preprocess/metrics.py rename to tabby/tools/preprocess/metrics.py diff --git a/scripts/preprocess/preprocess_project.py b/tabby/tools/preprocess/preprocess_project.py similarity index 96% rename from scripts/preprocess/preprocess_project.py rename to tabby/tools/preprocess/preprocess_project.py index 7ec3bc2..b489faa 100644 --- a/scripts/preprocess/preprocess_project.py +++ b/tabby/tools/preprocess/preprocess_project.py @@ -2,12 +2,12 @@ import glob import json import os -import filters -import metrics -from args import PreprocessProjectArgs from datasets import Dataset from transformers import HfArgumentParser +from . import filters, metrics +from .args import PreprocessProjectArgs + def parse_args(): parser = HfArgumentParser(PreprocessProjectArgs) diff --git a/scripts/preprocess/programming-languages-to-file-extensions.json b/tabby/tools/preprocess/programming-languages-to-file-extensions.json similarity index 100% rename from scripts/preprocess/programming-languages-to-file-extensions.json rename to tabby/tools/preprocess/programming-languages-to-file-extensions.json