모빌린트 허깅페이스 LLM 모델 long context 상한

Product & Environment

  • Product: MLA100

Description

안녕하세요. Mobilint Hugging Face에 공개된 최근 Qwen, Llama 등 LLM 모델들을 확인한 결과, 원본 모델은 32K 이상의 context를 지원하는 경우에도 Mobilint 배포본의 max_position_embeddings가 대부분 16,384로 설정되어 있었습니다.

기존 Q&A에서 context length는 사용 가능한 메모리에 따라 확장할 수 있다는 답변을 확인했는데, 공개된 모델들이 공통적으로 16K profile을 사용하는 구체적인 이유가 궁금합니다.

특히 다음 사항을 확인 부탁드립니다.

  1. 16K 제한이 Hugging Face의 config.json 또는 proxy code에서만 적용되는 소프트웨어 제한인지, 아니면 precompiled MXQ 내부의 KV-cache shape와 attention graph도 16K로 고정되어 있는지 궁금합니다.

  2. 16K 상한을 결정하는 주요 요인이 NPU DRAM 용량, KV-cache allocation, attention workspace, 메모리 대역폭, latency, compiler/runtime 제약 중 무엇인지 궁금합니다.

  3. max_position_embeddings 값만 변경하면 더 긴 context를 사용할 수 있는지, 아니면 원하는 context 길이로 MXQ를 다시 컴파일해야 하는지 궁금합니다.

  4. 16GB MLA100에서 Qwen2.5-3B와 같은 모델을 32K 이상으로 직접 컴파일하고 실행하는 것이 공식적으로 지원되는지 궁금합니다.

  5. 더 긴 context로 컴파일할 경우 필요한 LlmConfig, compiler option, KV-cache bit-width 설정 또는 권장 qb Compiler/Runtime 버전이 있다면 안내 부탁드립니다.

  6. 32K 이상의 precompiled MXQ 모델이나 paged KV-cache, sliding-window attention, cache eviction을 지원할 계획이 있는지도 궁금합니다.

jason님 안녕하세요? 모빌린트 임범수입니다.

Model Zoo에 공개된 자사 NPU용 모델들은 고객분들이 제품 구매 후 바로 활용하실 수 있도록 범용적인 세팅으로 컴파일된 모델들입니다. LLM의 경우 말씀하신 것처럼 기본 1-Batch 모델은 16k, 16-Batch 모델은 4k로 설정하여 제공해드리고 있습니다. 기술적인 제한은 없으며, 최대한 넓은 층의 고객분들이 사용하시기에 편하게 정한 값으로 봐주시면 되겠습니다.

  1. 릴리즈된 LLM들의 16K 제한은 컴파일 타임에 정해지는 제한이며, SW상에서도 이 제한을 인지시키기 위해 config.json을 수정하여 업로드한 것입니다.
  2. 이론상 ARIES에서 구동되는 LLM은 최대 64k 길이까지 컴파일이 가능합니다. 메모리 대역폭이나 Latency보다는 MLA100 PCIe Card 등 제품에 탑재된 메모리의 크기가 모델 웨이트와 KV Cache 영역이 확보될 만큼이 되어야 하기 때문에 모델 사이즈에 따라 length 제한이 달라집니다.
  3. mxq 자체에 최대 길이가 정해져 컴파일 된 것이기 때문에 config.json 수정만으로 길이를 늘릴 수 없으며, 다시 컴파일을 진행하셔야 합니다.
  4. 네 지원합니다. 3B 모델의 경우 충분히 16GB 메모리에서 32K 길이로 동작 가능할 것이라 예상합니다.
  5. 이에 대한 자세한 내용은 공식 문서를 참고 부탁드립니다.
  6. 자사 ARIES의 경우 8개의 코어를 활용하여 다양한 모델을 적절한 workload 분배와 함께 사용하는 것이 주요 장점이기 때문에, 메모리 전체를 사용하도록 LLM을 컴파일할 경우 이러한 시나리오에 사용하기가 힘들어 기본적으로 16k로 제공드리고 있는 점 양해 부탁드립니다. Paged KV-Cache, Cache eviction의 경우 사내에서 연구가 지속되고 있으며, sliding-window attention의 경우 원본 모델이 사용하면 컴파일된 mxq 내부적으로도 동일한 구조로 동작하는 점 참고 바랍니다.

자사 제품을 사용해주셔서 감사드리며, 추가적으로 궁금하신 사항이 있으시면 편하게 질문 부탁드립니다.

감사합니다.

답변 감사합니다.
모빌린트 Hugging Face에서 제공하는 Qwen2.5-3B-Instruct-W4V8.mxq를 MLA100에서 실행하고 있습니다.

공개된 MXQ는 최대 context length가 16K로 컴파일되어 있으며, config.json 수정만으로는 32K로 확장할 수 없고 MXQ 재컴파일이 필요하다고 이해했습니다.

Qwen2.5-3B-Instruct 모델을 batch 1, 최대 context length 32K 조건으로 실험하려면 별도의 32K MXQ를 제공받아야 할까요? 필요하다면 해당 사양으로 컴파일된 MXQ를 지원받을 수 있는지 문의드립니다.

제공이 어렵다면, 사용자가 직접 32K MXQ를 컴파일하는 데 필요한 compiler 설정, 절차 및 요구되는 SDK/compiler 버전도 안내해 주시면 감사하겠습니다.

공식 릴리즈된 qb Compiler에서 컴파일 가능한 모델의 경우 따로 MXQ를 저희가 제공드리고 있지는 않습니다.

윗 답변의 5번 내용과 함께 Github의 mblt-sdk-tutorial을 참고 부탁드립니다.

안녕하세요. Qwen2.5-3B 모델의 32K context MXQ 컴파일과 관련해 문의드립니다.

아래 환경에서 32K 컴파일을 여러 설정으로 시도했으나, quantization 및 MBLT 생성 이후 MLA100 backend compilation의 attention layer에서 실패했습니다.

  • qbcompiler: 1.2.0

  • Target device: MLA100 (aries-rb)

  • Model: Qwen2.5-3B-Instruct

  • Batch size: 1

  • Weight precision: W8

  • 목표 KV-cache precision: K8/V8

  • maxSequenceLength=32768, maxCacheLength=32768

공식 문서 예제에 따라 maxDataLength=32768, maxCoreDataLength=128로 설정한 경우와, prefill chunk 영향을 확인하기 위해 data/sequence/core length를 줄인 경우를 모두 시험했습니다. 또한 compiler 기본 inference scheme, single, global8, useGlobalCore 설정 및 llm_fast 적용 여부도 변경해 보았지만 동일한 계열의 오류가 발생했습니다.

initial_num_div failed
_set_bffr2_3_and_check: output memory check failed
layer=/attn_mask_*/softmax/matmul_0
num_div=32768x16

모델 파싱, calibration, W8 quantization 및 32K MBLT 생성까지는 완료되지만, backend의 attention buffer division 단계에서 실패하여 최종 MXQ가 생성되지 않습니다.

다음 사항을 확인 부탁드립니다.

  1. qbcompiler 1.2.0에서 Qwen2.5-3B의 32K context 컴파일이 공식적으로 지원되는지

  2. 지원된다면 권장하는 LlmConfig 전체 설정값과 compiler preset

  3. 32K attention의 cache dimension을 분할하는 별도 tiling 설정이나 backend 옵션이 있는지

  4. 해당 기능에 qbcompiler 1.2.0과 다른 compiler build 또는 별도 패치가 필요한지

  5. 공개 BitConfig와 별도로 KV-cache의 K8/V8 저장 형식을 지정하거나 확인하는 옵션이 있는지

가능하다면 Qwen2.5-3B 32K용 최소 재현 컴파일 코드 또는 공식 권장 compile configuration도 함께 제공 부탁드립니다.

jason님 안녕하세요? 모빌린트 임범수입니다.

말씀해주신 설정들은 전부 정상 범위 이내입니다. 메모리 용량이 허용하는 한 이론상 128K 길이까지 컴파일이 가능해야 하나, 제보 주신 컴파일 불가능한 로그의 원인을 현재 추적 중에 있습니다.

사내 개발 중인 차기 버전의 qb Compiler로 32K 컴파일이 되는지 확인한 후, 만약 가능하다면 mxq를 우선적으로 전달드리고 추후 릴리즈될 qb Compiler 사용에 대해 안내해드리겠습니다.

불편을 드려 죄송합니다.

감사합니다.

jason님 안녕하세요? 모빌린트 임범수입니다.

16k를 넘어가는 context length에 대해서 현재 개발용 qb Compiler에서 구현이 완료되어 안정성 검증 과정에 있습니다.

이번 qb Compiler 1.3 버전에는 안타깝게도 포함되지 않을 예정이지만 내부적으로 mxq 정상 동작 여부 확인한 이후에 바로 전달 드릴 수 있도록 하겠습니다.

감사합니다.