Chitu (Red Rabbit): высокопроизводительный фреймворк для рассуждений на основе больших языковых моделей от команды Цинхуа

Общее введение

Chitu - это фреймворк для рассуждений с открытым исходным кодом, разработанный командой PACMAN Университета Цинхуа под названием "Red Rabbit", который специально предназначен для запуска больших языковых моделей. Chitu поддерживает различные аппаратные средства, такие как графические процессоры NVIDIA и отечественные чипы, и может использоваться от автономных до крупных кластеров.Его изюминкой является вывод с помощью моделей FP8, что позволяет значительно снизить затраты, например, запуск DeepSeek-671B на A800, который использует вдвое меньше GPU и более чем в 3 раза быстрее vLLM.Код находится в открытом доступе на GitHub и может быть бесплатно загружен и использован предприятиями или частными лицами. Это готовый инструмент для производственных сред, подходящий для команд, которые хотят сэкономить деньги, но при этом добиться производительности.

Chitu(赤兔):清华团队推出的高性能大语言模型推理框架

 

Список функций

  • Он поддерживает вывод моделей FP8 и BF16 и может работать на старых графических процессорах и отечественных чипах с низкой стоимостью и высокой производительностью.
  • Адаптируется к широкому спектру аппаратных средств, от чистых CPU до GPU, таких как NVIDIA A800, H20 и т.д., и крупномасштабных кластеров.
  • Оптимизируйте скорость вывода с помощью CUDA Graph для более быстрого вывода за один запрос.
  • Предоставляет сервисный интерфейс, позволяющий вызывать модели напрямую через HTTP-запросы.
  • Поддерживает многоузловые распределенные рассуждения, подходящие для обработки больших объемов задач.
  • Открытый исходный код, который предприятия могут изменять или оптимизировать по мере необходимости.

 

Использование помощи

Процесс установки

Установка Chitu не является сложной, но требует некоторой подготовки. Ниже приведены подробные шаги:

  1. Подготовка среды
    • Система: рекомендуется Ubuntu 22.04, машина с графическим процессором NVIDIA (например, A800 или H20).
    • Программное обеспечение: установите Git, Python 3.10, CUDA 12.1 (с поправкой на версию вашего GPU), PyTorch 2.1.
    • Пример команды:
      sudo apt update && sudo apt install -y git python3.10 python3-pip
      pip install -U torch==2.1 --index-url https://download.pytorch.org/whl/cu121
      
  2. Код загрузки
    • Клонируйте код Читу локально с помощью Git:
      git clone --recursive https://github.com/thu-pacman/chitu
      cd chitu
      
  3. Установка зависимостей
    • Установите необходимые пакеты Python и среду компиляции:
      pip install -r requirements-build.txt
      pip install flash-attn
      
  4. компиляция и установка
    • Установите параметры компиляции (настройте TORCH_CUDA_ARCH_LIST в соответствии с вашим GPU, например, 8.0 для A800) и скомпилируйте:
      TORCH_CUDA_ARCH_LIST=8.0 CHITU_SETUP_JOBS=4 MAX_JOBS=4 pip install --no-build-isolation .
      
  5. Проверка установки
    • Проведите тест, чтобы убедиться, что все в порядке:
      torchrun --nproc_per_node 1 test/single_req_test.py
      

Как использовать

После загрузки Chitu вы можете запустить службу из командной строки или провести один тест. Вот как это сделать:

Запуск службы рассуждений

  1. Настройка путей модели
    • Подготовьте файлы модели, например DeepSeek-R1, в локальном каталоге (например. /data/DeepSeek-R1).
    • в команде редактирования models.ckpt_dir Параметр указывает на путь модели.
  2. Начальные услуги
    • Запустите автономную службу с помощью torchrun, прослушивая порт 21002:
      export WORLD_SIZE=1
      torchrun --nproc_per_node 1 chitu/serve.py \
      serve.port=21002 \
      models=DeepSeek-R1 \
      models.ckpt_dir=/data/DeepSeek-R1 \
      infer.use_cuda_graph=True \
      request.max_new_tokens=100
      
  3. Услуги по тестированию
    • Отправьте запрос с помощью curl и проверьте, правильно ли отвечает модель:
      curl localhost:21002/v1/chat/completions \
      -H "Content-Type: application/json" \
      -d '{"messages": [{"role": "user", "content": "你好,Chitu 是什么?"}]}'
      
    • Результат возврата будет в формате JSON, содержащий ответ модели.

Выполнение одного теста на рассуждение

  • Если вы не хотите запускать сервис, вы можете просто протестировать вывод модели:
    torchrun --nproc_per_node 1 test/single_req_test.py \
    models=DeepSeek-R1 \
    models.ckpt_dir=/data/DeepSeek-R1 \
    request.max_new_tokens=64
  • В терминале отобразится вывод, сообщающий о том, что сгенерировала модель.

Многоузловые распределенные рассуждения

  1. Подготовка нескольких машин
    • Убедитесь, что Chitu и зависимости загружены на каждой машине и что файлы моделей находятся в общем хранилище.
  2. Запуск распределенных служб
    • Запустите его на двух машинах с 8 графическими процессорами на каждой:
      torchrun --nnodes 2 --nproc_per_node 8 test/single_req_test.py \
      request.max_new_tokens=64 \
      infer.pp_size=2 \
      infer.tp_size=8 \
      models=DeepSeek-R1 \
      models.ckpt_dir=/data/DeepSeek-R1
      
  3. Проверьте эффект
    • После многоузлового запуска производительность будет выше, чем на одной машине, что подходит для обработки больших объемов запросов.

Функциональное управление

Экономьте деньги и скорость с моделями FP8

  • Chitu поддерживает модели формата FP8, которые используют меньше графических процессоров и быстрее, чем BF16.
  • Операция: Добавить при запуске infer.soft_fp8=TrueНапример, если модель в формате FP8, то и модель должна быть в формате FP8. Например:
    torchrun --nproc_per_node 1 chitu/serve.py \
    serve.port=21002 \
    models=DeepSeek-R1 \
    models.ckpt_dir=/data/DeepSeek-R1 \
    infer.soft_fp8=True
    

Ускорение с помощью CUDA Graph

  • Одиночные запросы можно ускорить с помощью CUDA Graph, добавив параметр infer.use_cuda_graph=True.
  • Тестовый эффект: запустите одно умозаключение и сравните разницу в скорости с добавлением и без него.

тестирование производительности

  • Chitu поставляется с инструментами бенчмаркинга для измерения пропускной способности и задержки:
    python benchmarks/benchmark_serving.py \
    --model "deepseek-r1" \
    --iterations 10 \
    --seq-len 10 \
    --base-url http://localhost:21002
    
  • Результат покажет количество жетон цифры, которые помогут вам оптимизировать распределение средств.

предостережение

  • Если вы используете несколько узлов, сеть должна быть стабильной, иначе она будет падать.
  • Недостаточный объем памяти GPU может привести к ошибке OOM, уменьшите его. infer.max_seq_len или с меньшим количеством узлов.
  • Поддержка отечественных чипов все еще находится в процессе оптимизации, возможно, придется изменить код для адаптации.

Пользоваться Chitu несложно - просто следуйте инструкциям, и все будет готово к работе. Его документация и сообщество также находятся на GitHub, так что вы можете поднять вопрос, если у вас есть вопросы.

© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...