Полнофункциональная, готовая к использованию среда для точной настройки модели Llama 3 с использованием пользовательского набора данных и выполнения выводов на основе точно настроенных моделей.
Примечание. Пока это тестируется только на графических процессорах NVIDIA RTX 2080 и NVIDIA Tesla T4. Он не тестировался с другими классами графических процессоров или процессорами.
Запустите эту команду на своем хост-компьютере, чтобы проверить, какой графический процессор Nvidia у вас установлен.
nvidia-smi
Это должно отобразить информацию о вашем графическом процессоре.
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.171.04 Driver Version: 535.171.04 CUDA Version: 12.2 |
| -----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
| =========================================+======================+====================== |
| 0 NVIDIA GeForce RTX 2080 Off | 00000000:01:00.0 On | N/A |
| 22% 38C P8 17W / 215W | 197MiB / 8192MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
git clone https://github.com/amithkoujalgi/llama3-playground.git
cd llama3-playground
bash build.sh
bash run.sh
При этом запускается контейнер Docker со следующими службами.
Услуга | Доступная извне конечная точка | Внутренний порт | Описание |
---|---|---|---|
супервайзер | http://локальный хост:8884 | 9001 | Для запуска обучения на основе пользовательского набора данных и просмотра журналов процесса обучения. |
Сервер FastAPI | http://localhost:8883/документы | 8070 | Для доступа к API сервера модели |
Сервер JupyterLab | http://localhost:8888/lab | 8888 | Доступ к интерфейсу JupyterLab для просмотра контейнера и обновления/экспериментирования с кодом. |
Примечание . Все процессы (OCR, обучение и вывод) используют графический процессор, и если одновременно будет выполняться более одного процесса любого типа, мы столкнемся с проблемами нехватки памяти (OOM). Чтобы справиться с этим, система была спроектирована так, чтобы в любой момент времени запускался только один процесс. (т. е. одновременно может быть запущен только один экземпляр OCR, обучения или вывода)
Не стесняйтесь обновлять код в соответствии с вашими потребностями.
Зайдите в терминал и введите
playground --train
Зайдите в терминал и введите
playground -l
Это создает модели в /app/data/trained-models/
. Скрипт трейнера создает 2 модели:
lora-adapters
.Запустите распознавание текста:
cd /app/llama3_playground/core
python ocr.py
-f " /app/sample.pdf "
Чтобы понять, что означают эти параметры, перейдите в JupyterLab и выполните python ocr.py -h
Вывод с помощью RAG:
cd /app/llama3_playground/core
python infer_rag.py
-m " llama-3-8b-instruct-custom-1720802202 "
-d " /app/data/ocr-runs/123/text-result.txt "
-q " What is the employer name, address, telephone, TIN, tax year end, type of business, plan name, Plan Sequence Number, Trust ID, Account number, is it a new plan or existing plan as true or false, are elective deferrals and roth deferrals allowed as true or false, are loans permitted as true or false, are life insurance investments permitted and what is the ligibility Service Requirement selected? "
-t 256
-e " Alibaba-NLP/gte-base-en-v1.5 "
-p " There are checkboxes in the text that denote the value as selected if the text is [Yes], and unselected if the text is [No]. The checkbox option's value can either be before the selected value or after. Keep this in context while responding and be very careful and precise in picking these values. Always respond as JSON. Keep the responses precise and concise. "
Чтобы понять, что означают эти параметры, перейдите в JupyterLab и выполните python infer_rag.py -h
Это понадобится, если на вашем хост-компьютере не установлен NVIDIA Container Toolkit.
# Configure the production repository
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list |
sed ' s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g ' |
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# Optionally, configure the repository to use experimental packages
sed -i -e ' /experimental/ s/^#//g ' /etc/apt/sources.list.d/nvidia-container-toolkit.list
# Update the packages list from the repository
sudo apt-get update
# Install the NVIDIA Container Toolkit packages
sudo apt-get install -y nvidia-container-toolkit
Для других сред обратитесь к этому.
curl --silent -X ' POST '
' http://localhost:8883/api/infer/sync/ctx-text '
-H ' accept: application/json '
-H ' Content-Type: application/json '
-d ' {
"model_name": "llama-3-8b-instruct-custom-1720690384",
"context_data": "You are a magician who goes by the name Magica",
"question_text": "Who are you?",
"prompt_text": "Respond in a musical and Shakespearean tone",
"max_new_tokens": 50
} ' | jq -r " .data.response "
curl -X ' POST '
' http://localhost:8883/api/ocr/sync/pdf '
-H ' accept: application/json '
-H ' Content-Type: multipart/form-data '
-F ' file=@your_file.pdf;type=application/pdf '
true
если запущен какой-либо процесс OCR, в противном случае — false
. curl -X ' GET '
' http://localhost:8883/api/ocr/status '
-H ' accept: application/json '
Ссылки: