# Раздел 4: Деплоймент - Имплементация на модел, готов за продукция ## Преглед Този подробен урок ще ви преведе през целия процес на деплойване на фино настроени квантовани модели с Foundry Local. Ще разгледаме конвертиране на модела, оптимизация чрез квантоване и конфигурация за деплоймент от начало до край. ## Предварителни условия Преди да започнете, уверете се, че разполагате със следното: - ✅ Фино настроен onnx модел, готов за деплоймент - ✅ Компютър с Windows или Mac - ✅ Python 3.10 или по-нова версия - ✅ Най-малко 8GB свободна RAM памет - ✅ Инсталиран Foundry Local на вашата система ## Част 1: Настройка на средата ### Инсталиране на необходимите инструменти Отворете вашия терминал (Command Prompt за Windows, Terminal за Mac) и изпълнете следните команди последователно: ```bash # Update transformers library to the latest version pip install transformers -U # Install Microsoft Olive (model conversion tool) pip install git+https://github.com/microsoft/Olive.git # Install ONNX Runtime GenAI git clone https://github.com/microsoft/onnxruntime-genai cd onnxruntime-genai && python build.py --config Release pip install {Your build release path}/onnxruntime_genai-0.9.0.dev0-cp311-cp311-linux_x86_64.whl # Install additional dependencies pip install onnx onnxruntime numpy ``` ⚠️ **Важно**: Ще ви е необходима и версия на CMake 3.31 или по-нова, която може да бъде изтеглена от [cmake.org](https://cmake.org/download/). ## Част 2: Конвертиране и квантоване на модела ### Избор на правилния формат За фино настроени малки езикови модели препоръчваме използването на **ONNX формат**, защото предлага: - 🚀 По-добра оптимизация на производителността - 🔧 Независимост от хардуера - 🏭 Възможности, готови за продукция - 📱 Съвместимост между различни платформи ### Метод 1: Конвертиране с една команда (Препоръчително) Използвайте следната команда, за да конвертирате директно вашия фино настроен модел: ```bash olive auto-opt \ --model_name_or_path /path/to/your/finetuned/model \ --device cpu \ --provider CPUExecutionProvider \ --use_model_builder \ --precision int4 \ --output_path models/your-model-name/onnx \ --log_level 1 ``` **Обяснение на параметрите:** - `--model_name_or_path`: Път до вашия фино настроен модел - `--device cpu`: Използване на CPU за оптимизация - `--precision int4`: Използване на INT4 квантоване (приблизително 75% намаление на размера) - `--output_path`: Път за изходния конвертиран модел ### Метод 2: Подход с конфигурационен файл (За напреднали потребители) Създайте конфигурационен файл с име `finetuned_conversion_config.json`: ```json { "input_model": { "type": "HfModel", "model_path": "/path/to/your/finetuned/model", "task": "text-generation" }, "systems": { "local_system": { "type": "LocalSystem", "accelerators": [ { "execution_providers": [ "CPUExecutionProvider" ] } ] } }, "passes": { "builder": { "type": "ModelBuilder", "config": { "precision": "int4", "quantization_config": { "block_size": 128, "is_symmetric": false } } } }, "host": "local_system", "target": "local_system", "cache_dir": "cache", "output_dir": "models/output/your-finetuned-model-onnx" } ``` След това изпълнете: ```bash olive run --config ./finetuned_conversion_config.json ``` ### Сравнение на опциите за квантоване | Прецизност | Размер на файла | Скорост на инференция | Качество на модела | Препоръчителна употреба | |------------|-----------------|-----------------------|--------------------|-------------------------| | FP16 | Базов × 0.5 | Бърза | Най-добро | Висок клас хардуер | | INT8 | Базов × 0.25 | Много бърза | Добро | Балансиран избор | | INT4 | Базов × 0.125 | Най-бърза | Приемливо | Ограничени ресурси | 💡 **Препоръка**: Започнете с INT4 квантоване за първия си деплоймент. Ако качеството не е задоволително, опитайте с INT8 или FP16. ## Част 3: Конфигурация за деплоймент с Foundry Local ### Създаване на конфигурация на модела Навигирайте до директорията за модели на Foundry Local: ```bash foundry cache cd ./models/ ``` Създайте структурата на директорията за вашия модел: ```bash mkdir -p ./models/custom/your-finetuned-model ``` Създайте конфигурационния файл `inference_model.json` в директорията на вашия модел: ```json { "Name": "your-finetuned-model-int4", "Description": "Fine-tuned quantized model", "Version": "1.0", "PromptTemplate": { "system": "<|im_start|>system\n{Content}<|im_end|>", "user": "<|im_start|>user\n{Content}<|im_end|>", "assistant": "<|im_start|>assistant\n{Content}<|im_end|>", "prompt": "<|im_start|>user\n{Content}<|im_end|>\n<|im_start|>assistant" }, "ModelConfig": { "max_length": 2048, "temperature": 0.7, "top_p": 0.9, "repetition_penalty": 1.1 } } ``` ### Шаблони за конфигурация, специфични за модела #### За модели от серията Qwen: ```json { "Name": "qwen-finetuned-int4", "PromptTemplate": { "system": "<|im_start|>system\n{Content}<|im_end|>", "user": "<|im_start|>user\n{Content}<|im_end|>", "assistant": "<|im_start|>assistant\n{Content}<|im_end|>", "prompt": "<|im_start|>user\n{Content}<|im_end|>\n<|im_start|>assistant" } } ``` ## Част 4: Тестване и оптимизация на модела ### Проверка на инсталацията на модела Проверете дали Foundry Local разпознава вашия модел: ```bash foundry cache ls ``` Трябва да видите `your-finetuned-model-int4` в списъка. ### Започване на тестване на модела ```bash foundry model run your-finetuned-model-int4 ``` ### Бенчмаркинг на производителността Следете ключови метрики по време на тестването: 1. **Време за отговор**: Измерете средното време за отговор 2. **Използване на паметта**: Наблюдавайте консумацията на RAM 3. **Натоварване на CPU**: Проверете натоварването на процесора 4. **Качество на изхода**: Оценете релевантността и последователността на отговорите ### Контролен списък за валидиране на качеството - ✅ Моделът отговаря подходящо на запитвания от фино настроената домейн област - ✅ Форматът на отговорите съответства на очакваната структура - ✅ Няма изтичане на памет при продължителна употреба - ✅ Консистентна производителност при различни дължини на входа - ✅ Правилно обработване на гранични случаи и невалидни входове ## Обобщение Поздравления! Успешно завършихте: - ✅ Конвертиране на формат на фино настроен модел - ✅ Оптимизация чрез квантоване на модела - ✅ Конфигурация за деплоймент с Foundry Local - ✅ Настройка на производителността и отстраняване на проблеми --- **Отказ от отговорност**: Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.