DeepSeek-V4-Flash로 LLM 조향(Steering)이 다시 흥미로워졌다
요약
본 글은 DeepSeek-V4-Flash와 같은 최신 LLM에서 '조향(Steering)' 기능을 활용하여 모델의 거부 행동(Refusal)을 제어하고, 일반적인 사용성을 높이는 방법에 대해 논합니다. 조향 벡터를 동적으로 적용하는 방식이 기존의 수정된 GGUF 방식보다 훨씬 우수하며, 이 기술은 단순히 검열 해제를 넘어 모델에 대한 사용자 제어 수준 자체를 근본적으로 변화시킬 잠재력을 지니고 있습니다.
핵심 포인트
- 조향(Steering) 기능은 LLM의 거부 행동을 제거하고 일반적인 사용성을 높이는 핵심 메커니즘이다.
- 조향 벡터는 추론 엔진 내부에서 동적으로 적용하는 것이, 모델 자체를 수정하는 것보다 훨씬 효율적이고 우수하다.
- 이 기술은 단순히 검열 해제(uncensoring)에 국한되지 않으며, 사용자 인터페이스나 개발 흐름 전반에 걸쳐 새로운 제어 도구로 활용될 수 있다.
- 조향을 통해 모델의 특정 편향이나 거부 메커니즘을 우회하거나 약화시키는 것이 가능하며, 이는 LLM 사용 방식의 패러다임을 바꿀 잠재력을 가진다.
올려줘서 고맙고, 한 가지 уточ정하자면 DwarfStar 조향 기능으로 DS4의 거부를 완전히 제거할 수 있었음
장난감 수준인 건 예시 데이터셋, 즉 내가 제공한 프롬프트 쌍뿐이지 기능 자체가 아님
적절한 데이터셋을 만들 수 있고 문서화가 잘 된 조향 기능 사용법을 이해하는 사람이라면 조향에 접근할 수 있다고 봤음
아무 이해 없이 복사·붙여넣기만 할 사람들도 거부 없는 모델에 접근하는 게 좋은지는 잘 모르겠고, 그래서 조향 파일은 공개하지 않았지만 여전히 꽤 혼란스러움
최근에는 지원이 확장돼서 조향 벡터를 항상, 생각한 뒤에만, 도구 호출 밖에서만 등 서로 다른 시점의 활성값에 적용할 수 있게 됨
많은 사람이 잘 모르는 중요한 점은, 추론 엔진 내부에서 벡터 방향 조향을 하는 방식이 같은 방식으로 수정된 GGUF를 쓰는 것보다 훨씬 낫다는 것임
조향을 많이 할수록 모델 능력이 손상되므로, 실행 시점에 적용하면 원하는 목표에 필요한 최소한만 적용할 수 있고, 선택한 순간에만 적용하는 것도 가능함
아직 구현하지는 않았지만, 거부 방향의 에너지가 특정 임계값을 넘을 때만 조향을 적용하는 것도 가능해 보이고, 실험해볼 여지가 많음
내가 이해한 바로는 DeepSeek V4는 무해한 입력에 대해 서구권 AI 모델에서 흔히 보이는 거부 행동이 거의 없거나 없음
이건 주로 소프트웨어 보안 평가 사례를 말하는 건가?
이 글이 조향 벡터의 가장 큰 활용처, 즉 모델의 거부를 제거하는 가능성(abliteration 또는 uncensoring)을 언급하지 않은 게 놀라움
예전에 “대부분의 거부는 단일 벡터 위에 있다”는 논문이 있었고, 그 벡터를 찾아 약화시키면 모델이 거부를 건너뛰고 “어떤” 요청에도 일반적으로 답하게 만들 수 있었음
거부를 지도 미세조정(SFT)으로 학습한 초기 모델에서는 꽤 가능했고, 최신 모델에서는 조금 더 복잡해 보이지만 어느 정도는 여전히 가능함
이미 이 과정을 자동화해 거부를 줄이는 라이브러리들이 있는데, 보통은 모델을 식별·수정한 뒤 검열 해제 모델로 배포하는 데 초점을 둠
조향 방식은 이 벡터 변경을 동적으로 켤 수 있어서, abliteration 과정이 관련 없는 작업의 정확도를 해치더라도 모델 자체를 바꿀 필요가 없음
p-e-w가 며칠 전 Discord에서 이 얘기를 했음 단일 뉴런 방식은 KLD에 꽤 나쁜 것으로 보여서, 그래서 최신 기법들이 자리 잡은 듯함
왜 검열에 그렇게 고정돼 있는지 모르겠음
관점을 뒤집으면, “백신은 해롭다” 같은 거짓을 말하지 않는 것도 검열에 포함됨
과학과 논리는 이런 주제를 종종 검열로 다루지만, 인터넷을 균등하게 샘플링한 모델은 백신이 해롭다고 생각할 수 있음
덜 순진한 보정은 이런 문제적 맥락을 검열할 것임
그래서 어떤 편향이 검열되어 있다고 보고 그것을 벗기면 일반적 사용성이 좋아질 거라고 생각하는 이유가 헷갈림
DS4 저장소에서 정말 흥미로운 건, 프런티어 연구소들이 사용자에게 숨겨둔 조절 손잡이들을 탐색하고, 그것들이 실제 개발·상호작용 흐름에 어떻게 들어갈 수 있을지 생각하는 부분이라고 봄
서로 다른 상호작용 방식을 탐색하고, 예를 들어 조향을 사용자 인터페이스에 유용하게 녹여 넣는 방법을 고민하는 게 정말 멋짐
일단 비밀이 풀리고 사용자가 이런 식으로 내부가 드러난 모델에서 얻을 수 있는 제어 수준과 효용을 이해하면, 조향은 도구함의 핵심 요소가 될 것임
모델이나 모델 제공자에게 이런 수준의 제어를 기대하는 것이 자연스러워질 듯함
“llama.cpp를 줄여서 DeepSeek-V4-Flash만 실행하도록 만든 버전이 DwarfStar 4”라는 설명은 사실이 아님 DwarfStar 4는 자체 프로젝트임
llama.cpp에 빚지고 있는 건 맞지만, 축소판은 아님
맞음. 코드 겹침은 몇몇 커널 정도로 최소임
구현한 양자화기를 위한 일부 양자화 코드가 있고, DwarfStar 4는 llama.cpp의 포크가 아님
다만 llama.cpp가 없었다면 중요한 세부사항을 빠르게 확인할 수 없었을 테니 프로젝트가 훨씬 빈약했을 것임
하지만 축소된 llama.cpp는 아님
이것이 llama.cpp가 이 프로젝트뿐 아니라 뒤따른 모든 프로젝트에 얼마나 중요한지 줄여주지는 않음
핵심은 코드가 아니라, 따라갈 길, 양자화 형식, 교훈, 패턴을 배우기 위해 확인할 수 있는 최적화 커널들임
진실은 그 중간쯤에 있는 듯함
DwarfStar 4는 주로 llama.cpp 덕분에 존재하는 것으로 보이고, 작성자들도 llama.cpp 코드에서 크게 영감을 받았으며, 일부는 적절한 저작권 표시와 함께 실제로 가져다 쓴 부분도 있음
나쁘다는 뜻은 아니고, 괜찮아 보임 ds4.c는 GGML에 링크하지 않지만, llama.cpp 프로젝트가 열어준 길과 그곳에서 개발된 커널, 양자화 형식, GGUF 생태계, 어렵게 얻은 엔지니어링 지식 덕분에 존재함
DeepSeek V4 Flash 전용 추론 경로를 만들 때 구현, 커널, 테스트, 설계 선택이 핵심 참고 자료였고, MIT 라이선스 아래 GGUF 양자화 레이아웃과 표, CPU 양자화·점곱 로직, 일부 커널 같은 소스 수준 조각이 유지되거나 적용됨
그래서 진심으로 감사하는 의미로 LICENSE 파일에 GGML 작성자 저작권 고지를 유지한다는 내용임 - https://github.com/antirez/ds4#acknowledgements-to-llamacpp-... https://news.ycombinator.com/item?id=48142885 이후 약 이틀 동안 가지고 놀기 꽤 재미있었고, 지금까지 생성 속도를 47.85 t/s에서 57.07 t/s로 올림
좋은 글이지만 한 가지가 헷갈림
글에서는 조향이 로컬 모델에서만 작동한다고 하는데, GitHub Copilot에는 “steer with message” 기능이 있어서 실행 중간에 방향을 바로잡을 수 있고 자주 씀
아마 서로 다른 종류의 조향일 것 같음
에이전트 조향은 하네스와 LLM 사이의 왕복 흐름 중간에 또 다른 사용자 메시지를 삽입하는 방식일 가능성이 큼
다른 종류의 조향임
그건 모델의 자연어 사고 출력에 텍스트를 주입하는 것, 또는 매우 비슷한 방식임
다만 Anthropic의 NLA 작업을 이용해 특정 층에서 모델 활성값의 자연어 표현을 보고, 그 텍스트를 편집한 뒤 완전히 다른 활성값으로 다시 변환하는 중간 방식도 가능함
모델이 어떻게 로컬이라고 할 수 있지? RAM 약 192GB가 필요하다면 로컬이라고 하기엔 좀 과해 보임
96GB MacBook에서도 돌아감
128GB면 더 좋고, DwarfStar README를 보면 됨
하드웨어가 있으면 다운로드해서 실행할 수 있나? 그렇다면 필요한 하드웨어를 실제로 갖고 있든 아니든 로컬임
필요한 무선 장치나 안테나가 없는 사람에게 Zigbee를 로컬/LAN으로 볼 수 있냐고 묻는 것과 비슷함
연결된 DwarfStar 저장소의 이 줄을 보니 제어 벡터가 떠오름 y = y - scale * direction[layer] * dot(direction[layer], y) https://vgel.me/posts/representation-engineering/에서는 제어 벡터를 “추가 프롬프트 없이 추론 중 모델 활성값에 적용해 모델 행동을 제어할 수 있는 벡터, 엄밀히는 층마다 하나씩 있는 벡터 목록”이라고 설명함
실제로 쓰고 싶은 것이라기보다는 딥러닝 연구용에 더 가까워 보임
아님. 거부 방지 벡터를 로드하면 예를 들어 컴퓨터 보안과 관련된 여러 질문을 할 수 있음
배우고 싶을 때 “이 문제 있는 요청은 도와줄 수 없습니다”라고 계속 말하는 모델보다 훨씬 나음
“프롬프트 문구를 조정하는 것만으로 이미 매우 세밀한 제어를 할 수 있다”는 부분은 잘 모르겠음
내가 프롬프트를 못 쓰는 걸 수도 있지만, 학습 데이터나 후처리 학습에서 온 편향을 극복하는 건 불가능하게 느껴짐
프롬프트로는 학습 데이터에서 패턴을 캐내는 정도만 가능하고, 실제로 세밀한 제어 같은 건 별로 없음
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기