Llama3.1-8B 모델 컴파일 관련 문의

:one:컴파일 속도 관련

현재 컴파일 속도가 매우 느립니다.
특히 RELEASE_PREFILL_BUCKETS, RELEASE_DECODE_BUCKETS 설정을 아래와 같이 지정했을 때 컴파일 시간이 크게 증가했습니다.
해당 과정이 어떠한 과정을 수행하는 지에 대한 설명과 컴파일 속도를 개선할 수 있는 방법이나 권장 설정이 있을까요?

RELEASE_PREFILL_BUCKETS = [ 
    (1, 256), (1, 320), (1, 384), (1, 512), (1, 640), (1, 768), (1, 1024), (2, 1024), (4, 1024),
]

RELEASE_DECODE_BUCKETS = [
    *[(1, 1024),  (4, 1024),   (8, 1024), (16, 1024), (32, 1024), (64, 1024)],
    *[(1, 2048),  (4, 2048),   (8, 2048), (16, 2048), (32, 2048)],
    *[(1, 4096),  (4, 4096),   (8, 4096), (16, 4096), (32, 4096)],
    *[(1, 8192),  (4, 8192),   (8, 8192), (16, 8192)],
    *[(1, 16384), (4, 16384), (8, 16384)],
    *[(1, 32768), (4, 32768)],
]

:two: 병렬 옵션 관련 (TP, PP, DP)

Llama3.1-8B 모델을 대상으로 추론 전 병렬성 테스트를 진행 중입니다.
TP, PP, DP 중 어떤 옵션이 컴파일 시점에 영향을 주며, 병렬화 설정을 변경할 때마다 재컴파일이 필요한 옵션은 무엇인지 알고 싶습니다.

즉, “컴파일 시 고정되어야 하는 병렬화 옵션”과 “추론시 변경 가능한 병렬화 옵션”을 구분하고 싶습니다.


:three: 컴파일 시 컨테이너 리부팅(OOM) 원인 분석

컴파일 과정 중 컨테이너가 리부팅되는 현상이 발생하고 있습니다.
로그 상에서 명시적인 에러는 없지만, OOM이 원인으로 추정됩니다.
아래 설정(Llama3.1-8B 모델, TP=8 등)을 기준으로:

  • 컴파일 시 필요한 최소 메모리/CPU 자원은 어느 정도일까요?
  • 1TB memory 환경에서 병렬 빌더(worker) 수를 어느 수준까지 늘리는 것이 적절할까요?
from furiosa_llm.artifact.builder import ArtifactBuilder

builder = ArtifactBuilder(
    "meta-llama/Llama-3.1-8B-Instruct",
    out_dir="./build_models",
    tensor_parallel_size=8,
    prefill_buckets=RELEASE_PREFILL_BUCKETS,
    decode_buckets=RELEASE_DECODE_BUCKETS,
    max_seq_len_to_capture=32 * 1024,
    prefill_chunk_size=8 * 1024,
)

builder.build(
    "./Output-Llama-3.1-8B-Instruct",
    num_pipeline_builder_workers=1, 
    num_compile_workers=1
)

:four: 멀티 노드 컴파일 관련

단일 노드에서의 컴파일 속도가 느려, 다수의 노드를 활용하는 방법을 검토 중입니다.

  • NPU가 없는 환경에서도 model compile이 가능한지 궁금합니다.
  1. furiosa-llm build의 다음 과정은 아티팩트를 구성하는 버킷을 정의하는 과정입니다. 만약 모든 버킷이 필요한 상황이 아니라면, 필요한 버킷만 설정하여 컴파일하시는 것을 권장드립니다.
  2. Llama3.1-8B 모델의 경우 TP만 TP=8로 고정해주시면 됩니다. 서빙 시 DP, PP는 변경 가능합니다.
  3. 최소 자원은 8B기준 CPU 16개, 64G 정도의 환경을 준비하시는 것을 말씀드리나, 이 경우 오래 걸릴 수 있습니다. CPU가 넉넉한(100코어 이상) 경우 병렬 빌더 수는 --num-compile-workers 4 --num-pipeline-builder-workers 4 옵션 정도면 적당할것 같습니다.
  4. NPU가 없어도 CPU만으로 artifact 컴파일이 가능합니다. SDK 중 apt 패키지로는 furiosa-compiler, pip 패키지로는 furiosa-llm 설치가 필요합니다.
2 Likes

안녕하세요? 불편을 드려 죄송합니다. 버켓이 촘촘하게 많은 경우 컴파일 시간이 오래 걸릴 수 있습니다. 이 부분은 점차 차후 릴리즈에서 개선될 예정입니다.

추가로, 한번 빌드된 아티팩트의 경우에는 compiler cache가 남게되어 같은 bucket 에 대해서는 기존에 빌드된 cache가 사용되어 빠르게 빌드하실 수 있습니다. 참고로, 퓨리오사 AI 내부에서는 CI/CD 파이프라인을 이용하여 아티팩트를 빌드하고 있으며 위와 같은 구성의 아티팩트는 cache 가 있는 경우 약 15분 정도면 빌드하고 있습니다.

하영님께서 주신 답변에서 조금 더 첨은 드리면 1TB 머신의 환경이라면 --num-pipeline-builder-workers 를 16까지 올리셔도 무난하게 동작할 것으로 예상됩니다.

2 Likes