AMD ROCm 환경에서의 Step-3.7-Flash 사용 시 ~94k 이상의 긴 컨텍스트 손상 및 추론 토큰 예산 설정 필요성
요약
AMD ROCm 환경에서 Step-3.7-Flash 모델 사용 시 발생하는 긴 컨텍스트 손상 문제와 추론 예산 설정 최적화 방법을 다룹니다. ROCm의 빠른 속도를 활용하면서도 컨텍스트를 90k로 제한하고, llama.cpp의 추론 예산을 설정하여 안정적인 답변을 얻는 실용적인 가이드를 제공합니다.
핵심 포인트
- ROCm 환경에서 컨텍스트를 약 90k~100k로 제한하여 데이터 손상 방지
- llama.cpp의 --reasoning-budget 설정을 통해 추론 토큰 예산 제어
- enable_thinking 옵션 대신 명시적인 토큰 예산 설정 권장
- RAG 및 분류 작업 시 안정적인 성능을 위한 실용적 설정값 제안
AMD 환경에서 ROCm을 사용하여 StepFun Step-3.7-Flash를 실행한 후의 짧은 노트입니다.
가장 중요한 두 가지 사항은 다음과 같습니다:
-
컨텍스트를 ~94k 이상으로 실행하지 마세요. 제 설정에서는 ROCm이 약 94k 토큰 부근에서 긴 컨텍스트 (long context)를 손상시킵니다. 모델이 보통 충돌(crash)하지는 않습니다. 그저 루프를 돌며 토큰 예산 (token budget)을 소모할 뿐, 사용 가능한 답변을 내놓지 못합니다. Vulkan은 더 긴 컨텍스트에서도 정확성을 유지하지만, 프롬프트 처리 (prompt processing) 속도는 ROCm이 훨씬 빠릅니다. RAG 워크로드의 경우, 저는 컨텍스트를 90k로 제한하고 ROCm을 계속 사용하고 있습니다.
-
엄격한 추론 예산 (thinking budget)을 설정하세요. Step의 추론 모드 (reasoning mode)는 기본적으로 활성화되어 있습니다. 저에게는
enable_thinking:false가 작동하지 않았고,reasoning_effort도 마찬가지였습니다. 효과가 있었던 방법은 llama.cpp의 추론 예산 (reasoning budget) 설정이었습니다: 서버 측:--reasoning-budget 256또는 요청당:thinking_budget_tokens: 256. 중요: 요청당thinking_budget_tokens는 서버가 이미--reasoning-budget가 설정된 상태로 시작되지 않았을 때만 작동하는 것으로 보입니다.
예산 설정이 없으면 Step은 종종 2000개 이상의 토큰 동안 추론하다가 finish_reason: length에 도달하여 빈 콘텐츠를 반환하곤 했습니다. 256개와 같은 작은 예산을 설정하면 정상적으로 답변했습니다. 제 분류 작업 (classification task)에서는 64개에서 1024개의 추론 토큰 사이에서 품질이 기본적으로 동일했습니다.
저의 현재 실용적인 설정:
- ROCm 사용
- 컨텍스트를 90k로 제한
thinking_budget_tokens를 보통 256으로 설정enable_thinking:false에 의존하지 말 것reasoning_effort에 의존하지 말 것
이것만으로도 저의 RAG/분류 워크로드에서 Step-3.7-Flash를 사용할 수 있게 되었습니다.
수정 사항: ~94k는 이전 빌드 기준이었으며, 현재 마스터 (4c6595503) 버전은 103k까지는 원문 그대로 깨끗하게 유지되다가 125k에서 퇴화(degenerate)합니다. KV 양자화 (KV quant, q8_0 vs f16)와 배치 크기 (batch size)는 차이가 없었습니다. 여유를 두기 위해 90k 제한을 유지하고 있습니다.
submitted by /u/neuromacmd
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기