此存儲庫的目的是簡單地實現可用於生產應用程序的GPT模型。該代碼當前支持以下用例:
請隨意分配此存儲庫,並將其用作開發自己的GPT應用程序的模板。
我們最終希望包括基於RL的Chatgpt微調。通常,這不會改變潛在的知識模型,而是會使與模型的相互作用更像人類。
設置代碼相當最小,可以在本地或云VM環境中輕鬆複製。
conda create -n python38 python=3.8
conda activate python38
conda install --file requirements.txt
*將來我們將嘗試提供此設置的Docker版本。
我們提供示例代碼,以下載和預處理小型數據集進行培訓和微調。使用此代碼作為模板,為您自己的數據創建數據預處理。
python src/data_io/fetch_shakespeare.py
在上一步中創建的小型shakespeare數據集中訓練很小的GPT模型。最終的模型不會非常概括,因為它很小,並且在一個很小的數據集上訓練有素,但可以生成類似莎士比亞的報價。
更改配置文件,並為了在您自己的數據上從頭開始訓練模型。在這一點上,您可以根據您的數據大小和資源從技術上擴展到非常大的模型大小。
python src/training/train_main.py --config_file config/train_shakespeare_small.yml
*對於此步驟,您可能需要一個或多個GPU。
在您自己的數據上微調開源GPT2模型。可以使用任何開源GPT樣模型(GPT2-MEDIUM,GPT2-XL等)。這是更常見的選擇,因為它需要更少的數據和資源(甚至可以在CPU上運行),並且比從頭開始訓練的速度快。
python src/training/train_main.py --config_file config/finetune_shakespeare.yml
給定輸入提示,從訓練有素的模型中採樣了許多輸出。這可以用於批處理。
python src/inference/sample_main.py --config_file config/sample_shakespeare.yml
在REST API中為訓練有素的型號提供的LightWeigth服務器。
uvicorn src.inference.service_main:app --reload --reload-include config/sample_gpt2.yml
服務器運行後,您可以使用提示(作為POST請求)查詢端點。有關查詢細節的更多詳細信息,請查看以下測試腳本。
服務器運行後,您可以使用以下腳本測試端點。
python src/inference/test_query.py
該存儲庫已被牢記生產應用程序部署,其中包括單元和集成測試。
* TESIN並不是廣泛的ATM,但我們將來會嘗試增加覆蓋範圍。
已經包括單位測試以涵蓋主要功能。您可以使用以下命令運行完整的單元測試套件:
pytest test/unit/
除單位測試外,我們還包括一些用於培訓,微調和採樣工作流程的集成測試。
pytest test/integration/
*集成測試當前需要數據工作(請參見上文)。
通常建議在與倉庫一起工作時啟用預要掛鉤。當前,運行一些基本格式檢查並運行單元測試套件(而不是集成測試)。
conda install -c conda-forge pre-commit
pre-commit install
本倉庫中的GPT實施是受Andrej Karpathy的Nanogpt Repo的啟發。我們的目標是重新實施,重新結構並使用模塊擴展並將其擴展,從而使其易於在其上構建不同類型的生產應用程序。