Введение
Эта статья использует экземпляр с 8 GPU H100, чтобы показать, как развернуть Llama3.1–405B. Самостоятельное развертывание больших моделей — трудоемкая и дорогостоящая задача. Чтобы избежать такой утомительной и дорогой работы, вы можете рассмотреть возможность использования Llama3.1–405B напрямую. Ищите отличные платформы провайдеров моделей в индустрии ИИ и используйте их через стандарт API OpenAI для сервисов инференса. Они удобны в использовании, а их модель оплаты по мере использования является экономически эффективной и управляемой. Мы рекомендуем сервис API инференса Llama3.1–405B от Novita AI.
Требования к развертыванию Llama3.1–405B
Все выпущенные Meta модели Llama3.1 включают 8B, 70B и 405B. Модель Llama3.1–405B является крупнейшей открытой языковой моделью на сегодняшний день с 405 миллиардами параметров. Результаты оценки производительности модели превосходят GPT-4 и GPT-4o и сопоставимы с Claude3.5-Sonnet.
Сложно загрузить такую большую модель на GPU. Оригинальная версия FP16 модели 405B требует 810 ГБ памяти GPU, как показано на изображении ниже. Однако, взяв в качестве примера самый мощный доступный на сегодня GPU H100, сервер с 8 сокетами не может напрямую загрузить эту версию модели. Необходимо квантовать версию FP16 модели и преобразовать ее в представление с низкой точностью, тем самым снижая требования к памяти и успешно загружая ее на GPU.
Модели Llama3.1 имеют схожую архитектуру с моделями Llama3, что упрощает работу с фреймворком инференса. Открытые решения для инференса, такие как vLLM, могут быть быстро адаптированы для поддержки большой модели Llama3.1–405B.
Для развертывания сервиса инференса Llama3.1–405B необходимы три ключевые подготовки:
- Оборудование: Рекомендуется арендовать экземпляр сервера с 8 GPU H100 и зарезервировать около 1.5 ТБ дискового пространства.
- Модель: Подготовьте аккаунт Hugging Face и загрузите оригинальную Llama3.1–405B или версии модели FP8 или INT4.
- Фреймворк инференса: Загрузите последнюю версию vLLM v0.5.3.post1.
Подготовка модели
После подготовки сервера с 8 GPU H100 войдите на сервер и загрузите модель. Мы покажем, как загрузить версию FP16 модели и преобразовать ее в квантованные версии FP8 и INT4 (конечно, вы также можете загрузить предварительно квантованные модели из Hugging Face).
Рекомендуем загрузить версию Instruct с платформы Hugging Face. Сначала зарегистрируйтесь и войдите в Hugging Face. Создайте и сохраните токен доступа текущего пользователя на странице настроек, который будет использоваться при загрузке модели.
Откройте страницу модели Llama3.1–405B: https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct, отправьте запрос на доступ к модели Meta и подождите около получаса для авторизации.
Вернувшись на сервер GPU, установите клиентское приложение Hugging Face и начните загрузку модели. Команда следующая:
pip install huggingface-hub
huggingface-cli login ## Input Access Token
huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct ## Start Downloading 405B
После долгого ожидания (в зависимости от скорости интернета) модель 405B размером 800 ГБ будет загружена на локальную машину. Выполните huggingface-cli scan-cache, чтобы просмотреть подробную информацию о модели.
Далее мы выполним квантование FP8 и INT4 для исходной модели.
Сначала загрузите инструмент квантования FP8. Вы можете использовать открытый AutoFP8: https://github.com/neuralmagic/AutoFP8. Вызовите скрипты из него для квантования в динамическом режиме. Сделайте это следующим образом:
git clone https://github.com/neuralmagic/AutoFP8.git
cd AutoFP8
pip install -e . ## Compile and install the AutoFP8 tool locally
python3 examples/quantize.py --model-id meta-llama/Meta-Llama-3.1-405B-Instruct --save-dir Meta-Llama-3-8B-Instruct-fp8 --activation-scheme dynamic --max-seq-len 2048 --num-samples 2048
Скрипт квантования указывает путь вывода для квантованной версии модели с помощью --save-dir. Поскольку это квантование только весов, общая скорость высока.
Вы также можете загрузить квантованную версию FP8, предоставленную Meta: https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct-FP8. Команда для загрузки следующая:
huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct-FP8
Как и для квантования FP8, вы можете использовать открытый инструмент AutoAWQ для выполнения квантования INT4. Адрес этого метода квантования: https://github.com/casper-hansen/AutoAWQ. Шаги квантования следующие:

Сборка фреймворка инференса
Используя мощное сообщество открытого кода, vLLM — это эффективный фреймворк инференса, предоставляющий поддержку различных LLM с своевременными обновлениями. Начиная с v0.5.3.post1, vLLM поддерживает сервис инференса для моделей Llama 3.1.
Шаги по загрузке исходного кода vLLM и его компиляции следующие:
git clone https://github.com/vllm-project/vllm
cd vllm
git checkout -b v0.5.3.post1 v0.5.3.post1
pip install -e .
После компиляции вы можете запустить сервис инференса.
В дополнение к компиляции vLLM на локальной машине, вы можете собрать vLLM как Docker-образ. Метод следующий:
git clone https://github.com/vllm-project/vllm
cd vllm
git checkout -b v0.5.3.post1 v0.5.3.post1
docker build -t vllm_0.5.3.p1 .
Вы также можете загрузить образ vLLM:
docker pull vllm/vllm-openai:v0.5.3.post1
Запуск сервиса инференса
После сборки фреймворка инференса vLLM вы можете запустить vLLM и загрузить модель Llama 3.1–405B для выполнения сервиса инференса. Для локальной компиляции фреймворка инференса vLLM необходимо перейти в корневой каталог исходного кода vLLM, а затем выполнить следующую команду для запуска сервиса инференса:
cd vllm
python3 -m vllm.entrypoints.openai.api_server --port 18001 --model meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tensor-parallel-size 8 --pipeline-parallel-size 1 --swap-space 16 --gpu-memory-utilization 0.99 --dtype auto --served-model-name llama31-405b-fp8 --max-num-seqs 32 --max-model-len 32768 --max-num-batched-tokens 32768 --max-seq-len-to-capture 32768
Если вы хотите запустить сервис инференса через Docker-контейнер, вы можете использовать следующую команду:
docker run -d --gpus all --privileged --ipc=host --net=host vllm/vllm-openai:v0.5.3.post1 --port 18001 --model meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tensor-parallel-size 8 --pipeline-parallel-size 1 --swap-space 16 --gpu-memory-utilization 0.99 --dtype auto --served-model-name llama31-405b-fp8 --max-num-seqs 32 --max-model-len 32768 --max-num-batched-tokens 32768 --max-seq-len-to-capture 32768
Как только фреймворк инференса vLLM запущен, он будет прослушивать порт 18001, принимая и обрабатывая запросы пользователей. Вы можете быстро проверить сервис инференса, отправив POST-запрос к конечной точке completions из вашего локального терминала. Команда следующая:
curl -X POST -H "Content-Type: application/json"
http://localhost:18001/v1/completions
-d '{"model": "llama31-405b-fp8", "prompt": "San Francisco is a"}'
На этом развертывание модели Llama 3.1 завершено.
Novita AI — это универсальная облачная платформа, которая воплощает ваши AI-амбиции в реальность. Интегрированные API, бессерверные вычисления, GPU-инстансы — экономически эффективные инструменты, которые вам нужны. Откажитесь от инфраструктуры, начните бесплатно и воплотите свое AI-видение в жизнь.
