Chitu(Red Rabbit): 칭화 팀의 고성능 대규모 언어 모델 추론 프레임워크

최신 AI 리소스게시됨 6 개월 전 AI 공유 서클
9.8K 00

일반 소개

Chitu는 칭화대학교의 PACMAN 팀이 개발한 오픈 소스 추론 프레임워크로, 대규모 언어 모델을 실행하기 위해 특별히 설계된 "Red Rabbit"이라고 불립니다. Chitu는 NVIDIA의 GPU와 국산 칩 등 다양한 하드웨어를 지원하며, 독립형부터 대규모 클러스터까지 사용할 수 있습니다.특히 FP8 모델을 사용한 추론은 비용을 획기적으로 절감할 수 있는데, GPU를 절반만 사용하고 vLLM보다 3배 이상 빠른 A800에서 DeepSeek-671B를 실행하는 것이 대표적입니다.이 코드는 GitHub에서 공개적으로 사용 가능하며 기업이나 개인이 무료로 다운로드하여 사용할 수 있습니다. 이 도구는 프로덕션 환경에서 바로 사용할 수 있는 도구로, 비용을 절감하면서도 성능을 원하는 팀에 적합합니다.

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

 

기능 목록

  • FP8 및 BF16 모델 추론을 지원하며, 저비용 고성능으로 구형 GPU 및 국산 칩에서도 실행할 수 있습니다.
  • 순수 CPU부터 NVIDIA A800, H20 등의 GPU, 대규모 클러스터에 이르기까지 다양한 하드웨어에 적응할 수 있습니다.
  • CUDA 그래프로 추론 속도를 최적화하여 한 번의 요청으로 더 빠른 결과를 얻을 수 있습니다.
  • HTTP 요청을 통해 모델을 직접 호출할 수 있는 서비스 인터페이스를 제공합니다.
  • 대용량 작업 처리에 적합한 다중 노드 분산 추론을 지원합니다.
  • 기업이 필요에 따라 변경하거나 최적화할 수 있는 오픈 소스 코드입니다.

 

도움말 사용

설치 프로세스

Chitu 설치는 복잡하지는 않지만 약간의 준비가 필요합니다. 자세한 단계는 다음과 같습니다:

  1. 환경 준비하기
    • 시스템: 우분투 22.04 권장, NVIDIA GPU(예: 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을 사용하여 로컬에서 Chitu의 코드를 복제합니다:
      git clone --recursive https://github.com/thu-pacman/chitu
      cd chitu
      
  3. 종속성 설치
    • 필요한 Python 패키지와 컴파일 환경을 설치합니다:
      pip install -r requirements-build.txt
      pip install flash-attn
      
  4. 컴파일 및 설치
    • 컴파일 파라미터를 설정하고(GPU에 따라 TORCH_CUDA_ARCH_LIST를 조정합니다(예: A800의 경우 8.0)) 컴파일합니다:
      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. 서비스 시작
    • 포트 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 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개의 GPU가 장착된 2대의 머신에서 실행하세요:
      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는 GPU 사용량이 적고 BF16보다 빠른 FP8 형식 모델을 지원합니다.
  • 작동: 시작 시 추가 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 그래프로 가속화

  • 파라미터를 추가하여 CUDA 그래프로 단일 요청을 가속화할 수 있습니다. 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에 있으므로 궁금한 점이 있으면 문제를 제기할 수 있습니다.

© 저작권 정책

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...