DeepSeek-V4-Flash: LLM 스티어링(조종)이 다시 흥미로워진 이유
오픈소스 로컬 모델인 DeepSeek-V4-Flash의 등장으로, 모델의 내부 상태를 직접 제어하여 출력을 유도하는 '스티어링(Steering)' 기술이 실용화 단계에 접어들었습니다. 개발자 antirez가 이 모델 기반으로 스티어링을 내장한 'DwarfStar 4' 프로젝트를 발표하며, 프롬프트 엔지니어링에 의존하지 않고 모델의 뇌를 직접 제어하는 방식에 대한 기대감이 높아지고 있습니다.
Golden Gate Claude(골든 게이트 브릿지에 꽂힌 클로드 모델) 사건 이후 저는 '스티어링(Steering, 조종)'이라는 개념에 매료되었습니다. 이는 모델의 활성화(Activation) 값을 추론 과정 중에 직접 조작하여 대규모 언어 모델(LLM)의 출력을 원하는 방향으로 유도하는 아이디어입니다.
DeepSeek V4 Flash antirez의 최근 프로젝트인 'DwarfStar 4'를 보고 이 글을 작성할 영감을 얻었습니다. 이 프로젝트는 llama.cpp를 경량화하여 DeepSeek-V4-Flash 모델만 실행할 수 있도록 만든 버전입니다. 이 모델이 특별한 이유는 무엇일까요? 아마도 많은 엔지니어들이 기다려왔던 바로 그것일 것입니다. 최소한 최신 프론티어 모델의 하위권 수준에는 견줄 만한 에이전트 코딩(Agentic Coding) 능력을 갖춘 로컬 모델이기 때문입니다. 스티어링은 기본적으로 로컬 모델을 필요로 하기 때문에, 이제야 많은 엔지니어들이 실질적으로 이 기술을 처음으로 시도해 볼 수 있게 되었습니다.
실제로 antirez는 DwarfStar 4에 스티어링을 핵심 기능(First-class citizen)으로 통합했습니다. 현재로서는 아주 기초적인 수준(기본적으로 프롬프트로도 재현할 수 있는 '말수' 조절 같은 토이 예시)에 불과하지만, 초기 버전이 공개된 지 불과 8일밖에 되지 않았다는 점을 감안하면 주목할 만합니다. 저는 이 프로젝트를 계속 주의 깊게 지켜볼 생각입니다.
스티어링의 작동 방식 스티어링의 기본 아이디어는 모델의 내부 뇌 상태에서 특정 개념(예: '간결하게 대답하기')을 추출한 다음, 추론(Inference) 과정 중에 개입하여 그 개념을 형성하는 수치적 활성화(Activation) 값을 증폭시키는 것입니다.
이를 구현하는 한 가지 방법은 동일한 100개의 프롬프트 세트를 두 번 모델에 입력하는 것입니다. 한 번은 일반 프롬프트로, 다른 한 번은 '간결하게 대답해'라는 문구를 추가하여 입력하는 것입니다. 그런 다음 각 프롬프트 쌍에 대해 모델의 활성화 값 차이를 측정합니다(한 활성화 행렬에서 다른 행렬을 빼서). 이것이 바로 '스티어링 벡터(Steering vector)'입니다. 이론적으로 이 벡터를 어떤 프롬프트의 동일한 활성화 계층에 더하면 모델이 간결하게 대답하게 만드는 등 동일한 효과를 얻을 수 있습니다.
또 다른, 더 정교한 방법은 두 번째 모델을 훈련시켜 기존 모델의 활성화 값에서 '특성(Features)'을 추출하는 것입니다. 여기서 특성이란 함께 나타나는 행동 패턴을 의미합니다. 그런 다음 이러한 특성을 개별 개념에 다시 매핑하고, 앞서 설명한 것과 같은 방식으로 이를 증폭시킬 수 있습니다. 이는 Anthropic이 희소 오토인코더(Sparse Autoencoders)를 통해 하고 있는 작업과 거의 같습니다. 이 방식은 단순한 접근법과 원리는 같지만, 더 깊은 패턴을 포착할 수 있게 해줍니다(단, 시간, 컴퓨팅 및 전문 지식 측면에서 훨씬 더 많은 비용이 든다는 단점이 있습니다).
스티어링이 흥미로운 이유 스티어링은 마치 치트 코드처럼 들립니다. 모델의 학습 데이터 분포에서 '똑똑한' 쪽으로 밀어붙이려고 대단히 공들여 학습 세트를 조립하는 대신, 왜 모델의 뇌에 있는 '똑똑함' 다이얼을 찾아내서 오른쪽 끝까지 돌려버리지 않는 것일까요? 또한 모델의 말투를 조정하는 더 우아한 방법처럼 보이기도 합니다. 프롬프트를 만지작거리며('반드시 ~해야 합니다' 같은 수식어를 추가하거나 제거하는 식으로) 시간을 낭비하는 대신, '간결함/장황함'이나 '꼼꼼함/속도'와 같은 슬라이더가 있는 제어판을 두고 직접 움직일 수 있다면 얼마나 좋을까요?
마지막으로, 그냥 멋지기 때문입니다. Golden Gate Claude가 억지로 모든 문장을 골든 게이트 브릿지로 끌고 가는 것을 지켜보는 것은 Oliver Sacks의 신경학적 일화(환자들의 기이한 뇌 증상)만큼이나 매혹적이고 불안하게 느껴집니다. 만약 당신 자신의 마음이 비슷한 방식으로 미세 조정된다면 어떨까요? 여전히 '당신'일 수 있을까요?
스티어링이 널리 사용되지 않는 이유 그렇다면 왜 우리는 스티어링을 더 많이 사용하지 않을까요? 왜 ChatGPT나 Claude Code에는 모델의 뇌를 실시간으로 조정할 수 있는 스티어링 패널이 아직 없을까요? 한 가지 이유는 스티어링이 안타깝게도 AI 연구 분야에서 일종의 '중산층(애매한 위치의)' 아이디어이기 때문입니다. 이는 거대 AI 연구소의 관심사 하위에 있습니다. 이들은 추론 중에 어색한 뇌 수술을 할 필요 없이 모델을 직접 조작(파인튜닝 등)할 수 있기 때문입니다. (제가 아는 한) Anthropic은 이 분야를 다루고 있지만, 대체로 해석 가능성(Interpretability)과 안전성(Safety) 관점에서 접근하고 있습니다. 그들이 모델이 특정 방식으로 행동하기를 원할 때, 그들은 스티어링을 가지고 장난치지 않고 그냥 모델을 훈련시킵니다.
스티어링은 API를 통해 LLM을 사용하는 우리 같은 일반 AI 사용자의 손에도 닿지 않는 기술입니다. API 환경에서는 모델을 조종(Steer)하는 데 필요한 모델 가중치(Weights)나 활성화 값에 접근할 수 없기 때문입니다. 예를 들어, 오직 OpenAI만이 GPT-5.5에 대한 스티어링 벡터를 식별하거나 노출할 수 있습니다. 오픈 가중치(Open-weights) 모델을 사용하면 이런 작업이 가능하지만, 아주 최근까지는...