Примечание
Этот репозиторий был заархивирован и больше не поддерживается, поскольку гораздо более эффективные рамки обслуживания были выпущены недавно, как VLLM и TGI.
Этот репо предоставляет демонстрации и пакеты для выполнения быстрых решений для вывода для Bloom. Некоторые из решений имеют свои собственные репо, и в этом случае предоставляется ссылка на соответствующие репо.
Мы поддерживаем ускорение Huggingface и глубокий вывод для поколения.
Установите необходимые пакеты:
pip install flask flask_api gunicorn pydantic accelerate huggingface_hub > =0.9.0 deepspeed > =0.7.3 deepspeed-mii==0.0.2В качестве альтернативы вы также можете установить DeepSpeed из источника:
git clone https://github.com/microsoft/DeepSpeed
cd DeepSpeed
CFLAGS= " -I $CONDA_PREFIX /include/ " LDFLAGS= " -L $CONDA_PREFIX /lib/ " TORCH_CUDA_ARCH_LIST= " 7.0 " DS_BUILD_CPU_ADAM=1 DS_BUILD_AIO=1 DS_BUILD_UTILS=1 pip install -e . --global-option= " build_ext " --global-option= " -j8 " --no-cache -v --disable-pip-version-checkВсе предоставленные сценарии протестированы на 8 A100 80 ГБ графических процессоров для Bloom 176b (FP16/BF16) и 4 A100 80 ГБ графических процессоров для Bloom 176b (int8). Эти сценарии могут не работать для других моделей или другого количества графических процессоров.
Вывод DS развертывается с использованием логики, заимствованной в библиотеке DeepSpeed MII.
Примечание. Иногда память графического процессора не освобождается, когда развертывается развертывание вывода DS. Вы можете освободить эту память, запустив killall python в терминале.
Для использования Bloom Quantized используйте dtype = int8. Кроме того, измените Model_Name на Microsoft/Bloom-Deepspeed Inference-Int8 для DeepSpeed Inference. Для ускорения HF не требуется никаких изменений для Model_Name.
HF Accelerate использует llm.int8 () и ds-inference использует Zeroquant для квантования после тренировки.
Это просит Generate_kwargs каждый раз. Пример: GENERATE_KWARGS =
{ "min_length" : 100 , "max_new_tokens" : 100 , "do_sample" : false }python -m inference_server.cli --model_name bigscience/bloom --model_class AutoModelForCausalLM --dtype bf16 --deployment_framework hf_accelerate --generate_kwargs ' {"min_length": 100, "max_new_tokens": 100, "do_sample": false} 'python -m inference_server.cli --model_name microsoft/bloom-deepspeed-inference-fp16 --model_class AutoModelForCausalLM --dtype fp16 --deployment_framework ds_inference --generate_kwargs ' {"min_length": 100, "max_new_tokens": 100, "do_sample": false} ' Сделайте <dethode_name> для запуска сервера генерации. Обратите внимание, что метод обслуживания является синхронным, и пользователям приходится ждать в очереди, пока не будут обработаны предыдущие запросы. Пример для Fire Server -запросов приведен здесь. Альтернатива, также предоставляется DockerFile, который запускает генеральный сервер на порту 5000.
Интерактивный пользовательский интерфейс может быть запущен с помощью следующей команды для подключения к серверу генерации. URL -адрес пользовательского интерфейса по умолчанию - http://127.0.0.1:5001/ . model_name просто используется пользовательским интерфейсом, чтобы проверить, является ли моделью моделью декодера или энкодера-декодера.
python -m ui --model_name bigscience/bloom Эта команда запускает следующий пользовательский интерфейс, чтобы играть с поколением. Извините за дерьмовый дизайн. Несотровью, мои навыки пользовательского интерфейса заходят только так далеко. ??? 
python -m inference_server.benchmark --model_name bigscience/bloom --model_class AutoModelForCausalLM --dtype bf16 --deployment_framework hf_accelerate --benchmark_cycles 5deepspeed --num_gpus 8 --module inference_server.benchmark --model_name bigscience/bloom --model_class AutoModelForCausalLM --dtype fp16 --deployment_framework ds_inference --benchmark_cycles 5В качестве альтернативы, чтобы быстрее загружать модель:
deepspeed --num_gpus 8 --module inference_server.benchmark --model_name microsoft/bloom-deepspeed-inference-fp16 --model_class AutoModelForCausalLM --dtype fp16 --deployment_framework ds_inference --benchmark_cycles 5deepspeed --num_gpus 8 --module inference_server.benchmark --model_name bigscience/bloom --model_class AutoModelForCausalLM --dtype bf16 --deployment_framework ds_zero --benchmark_cycles 5Если вы столкнетесь с вещами, не работающими или у вас есть другие вопросы, откройте проблему в соответствующей бэкэнд:
Если есть конкретная проблема с одним из сценариев, а не бэкэнд, только откройте здесь проблему и отметьте @Mayank31398.
Решения, разработанные для выполнения большого партийного локального вывода:
JAX:
Решение, разработанное для использования в режиме сервера (т.е. различный размер партии, различный скорость запроса) можно найти здесь. Это реализовано в ржавчине.