메뉴
HN
Hacker News 14일 전

DeepSeek-V4-Flash: LLM 스티어링(조종)이 다시 흥미로워진 이유

IMP
8/10
핵심 요약

오픈소스 로컬 모델인 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) 모델을 사용하면 이런 작업이 가능하지만, 아주 최근까지는...

원문 보기
원문 보기 (영어)
Ever since Golden Gate Claude I’ve been fascinated with “steering”: the idea that you can guide LLM outputs by directly manipulating the activations of the model mid-flight. DeepSeek V4 Flash I was inspired to write this post by antirez’s recent project DwarfStar 4 , which is a version of llama.cpp that’s been stripped down to run only DeepSeek-V4-Flash. What’s so special about this model? It might be what many engineers have been waiting for: a local model good enough to compete with at least the low end of frontier model agentic coding. Since steering requires a local model, it’s now practical for many engineers to try it out for the first time. And indeed, antirez has baked steering into DwarfStar 4 as a first-class citizen. Right now it’s very rudimentary (basically just the toy “verbosity” example you can replicate via prompting), but the initial release was only eight days ago . I plan to follow this project closely. How steering works The basic idea behind steering is extracting a concept (like “respond tersely”) from the model’s internal brain state, then reaching in during inference and boosting the numerical activations that form that concept. One way you might do this is to feed your model the same set of a hundred prompts twice, once with the normal prompts and once with the words “respond tersely” appended. Then measure the difference in the model’s activations 1 for each prompt pair (by subtracting one activation matrix from the other). That’s your “steering vector”. In theory, you can go and add that to the same activation layer for any prompt and get the same effect (of the model responding tersely). Another, more sophisticated way you might do this is to train a second model to extract “features” from your model’s activations: patterns of behavior that seem to show up together. Then you can try to map those features back to individual concepts, and boost them in the same way. This is more or less what Anthropic is doing with sparse autoencoders 2 . It’s the same principle as the naive approach, but it lets you capture deeper patterns (at the cost of being much more expensive in time, compute and expertise). Why steering is interesting Steering sounds like a cheat code. Instead of painstakingly assembling a training set that tries to push the model towards the “smart” end of the distribution in its training data, why not simply go uncover the “smart” dial in the model’s brain and turn it all the way to the right? It also seems like a more elegant way to adjust the way models talk. Instead of fiddling with the prompt (adding or removing qualifiers like “you MUST”), couldn’t we just have a control panel of sliders like “succinctness/verbosity” or “conscientiousness/speed” and move them around directly? Finally, it’s just cool . Watching Golden Gate Claude unwillingly drag every sentence back to the Golden Gate Bridge is as fascinating and unsettling as Oliver Sacks’ neurological anecdotes . What if your own mind was tweaked in a similar way? Would it still be you? Why steering hasn’t been used Why don’t we steer more, then? Why don’t ChatGPT and Claude Code already have a steering panel where you can adjust the model’s brain in real time? One reason is that steering is kind of an unfortunately “middle class” idea in AI research. It’s beneath the big AI labs, who can manipulate their models directly without having to do awkward brain surgery mid-inference. Anthropic is working on this stuff, but largely from an interpretability and safety perspective (as far as I know). When they want a model to behave in a certain way, they don’t mess around with steering, they just train the model. Steering is also out of reach for regular AI users like you and me 3 , who use LLMs via an API and thus don’t have access to the model weights or activations needed to steer the model. Only OpenAI can identify or expose steering vectors for GPT-5.5, for instance. We could do this for open-weights models, but until very recently (more on that later) there haven’t been any open models strong enough to be worth doing this for. On top of that, most basic applications of steering are outcompeted by just prompting the model. It sounds pretty impressive to be able to manipulate the model’s brain directly. But you know what else manipulates the model’s brain directly? Prompt tokens. You can exercise fairly fine-grained control over activations with steering, but you can already exercise extremely fine-grained control by tweaking the language of your prompt. In other words, there’s not much point going to the trouble to steer a model to be more verbose when you could simply ask . Steering the unpromptable One way for steering to be really useful is if we could identify a concept that can’t be prompted for. What about “intelligence”? You used to be able to prompt for intelligence - this is why 4o-era prompting always began with “you are an expert” - but current-generation models have that baked into their personalities, so prompting for it does nothing. Maybe steering for it would still work? Ultimately this is an empirical question, but I’m skeptical that we’ll be able to find an “intelligence” steering vector. Put another way, the steering vector that makes up a concept as difficult as “intelligence” might be almost coextensive with the entire set of weights of the model, and thus identifying it reduces to the problem of “training a smart model”. A sufficiently sophisticated steering approach ends up just replacing the actual model. If I take GPT-2, and at each layer I swap out the activations with the activations from a much stronger model with the same architecture, I will get a much better result. But at that point you’re not making GPT-2 more intelligent, you’re just talking to the stronger model instead. The intelligence is in the steering, not in the model. For much more on this, see my post AI interpretability has the same problems as philosophy of mind . Steering as data compression Another way for steering to be useful is if we could somehow steer for a concept that requires a ton of tokens to express. Steering would thus save us a big chunk of the model’s context window. Intuitively, we might think of this as a way to shift a concept from the model’s working memory into its implicit memory. For instance, what if we could identify a “knowledge of my particular codebase” concept? When GPT-5.5 speed-reads my codebase, some of that knowledge it gains has to be buried in the activations, right? Maybe we could drag that out into a very large steering vector. I would be surprised if this could work. I think we’ll run into the same problem as with extracting “intelligence”: the “knows my codebase” concept is probably sophisticated enough to require a full fine-tune of the model 4 . But it at least seems possible. Conclusion I’m fascinated with steering, but I’m not particularly optimistic about it. I think most of the gains can be more efficiently reproduced with prompts, and that the truly ambitious steering goals can be more efficiently reproduced by training or fine-tuning the model. However, the open-source community hasn’t done a lot of work on steering yet, and that might be just starting to change now. If I’m wrong and it does have practical applications, we should find that out in the next six months. It’ll be interesting to see if bespoke per-model tools like DwarfStar 4 end up including a “library” of boostable features. When a popular open-weights model is released, the community always rushes to release a suite of wrappers and quantized versions. Could we also see a rush to extract boostable features from the model? Models have lots of different activations you might measure (after attention, between each layer, etc). You can basically pick any one you want, or try multiple and see what works best. ↩ I recently read a really good deep dive into doing this with an open LLaMA model (and I tried it myself a few months ago, with mixed results.) ↩ Apologi