25줄의 Python으로 만드는 Jev
요약
본 글은 'Jev'라는 가상의 모델을 25줄의 Python 코드로 구현하여 소개합니다. Jev는 외부 API 호출이나 복잡한 학습 과정 없이, 로컬에서 빠르고 간편하게 프롬프트와 선택지를 받아 분류 확률을 출력하는 것이 특징입니다. 이는 데이터 보안과 빠른 실행에 초점을 맞춘 개발 예시를 보여줍니다.
핵심 포인트
- Jev는 25줄의 Python 코드로 구현된 가상의 모델입니다.
- 외부 API 호출 없이 로컬 환경에서 작동합니다.
- 프롬프트와 선택지를 받아 분류 확률을 출력하는 것이 핵심 기능입니다.
- 데이터 보안에 중점을 두어 데이터를 외부로 전송하지 않습니다.
모두가 Jev에 대해 이야기한다. Jev가 무엇을 했는지, Jev가 어떻게 했는지를 말이다. 트위터에서는 모두가 Jev에 열광하며, 대규모 언어 모델(LLM)의 다음 프론티어나 AI의 새로운 패러다임이라고 이야기하고 있다. 솔직히 말해서, 우리는 그렇게 생각하지 않는다. 그래서 25줄의 Python으로 작성한 Jev를 소개한다.
모델을 불러온다.
# /// script
# requires-python = ">=3.12"
# dependencies = ["huggingface-hub", "llama-cpp-python", "numpy"]
...
프롬프트를 불러오고 선택지를 정의한다.
labels = ["A", "B", "C"]
choices = ["Legitimate", "Spam", "Phishing"]
email = "Payroll asks for your password on a non-company sign-in page."
...
로짓(logits)을 적절하게 확률로 변환한다.
logits = model.scores[model.n_tokens - 1]
token_ids = [model.tokenize(text=label.encode(), add_bos=False)[0] for label in labels]
choice_logits = numpy.asarray([logits[token_id] for token_id in token_ids])
...
네, 이게 Jev입니다.
응, 알고 있다.
- 우리는 이것을 "System One 의사결정 모델"이라고 부르지 않는다.
- API도 호출하지 않는다.
- 합성 데이터를 대량으로 만들지도 않는다.
- 판단과 확률을 보정(calibration)하기 위해 강화학습(Reinforcement Learning for Calibrated Decisions, RLCD)으로 모델을 훈련시키지도 않는다 (어차피 항상 맞는 것은 아니니까).
하지만, 그렇다. 이게 Jev이다.
- 프롬프트와 선택지를 받아 확률을 출력한다. 즉 분류하는 것이다.
- 빠르다.
- 로컬에서 작동한다.
- 데이터를 어디에도 보내지 않는다.
그리고 우리는 당신의 데이터를 어디에도 보내지 않는 것을 좋아한다. 꼭 NobodyWho를 확인해 보라.
(참고: 이것은 패러디 블로그 글입니다. 더 우수하고 완벽한 Jev의 오픈 구현에 대해서는 OpenJev, openjev-sglang, DiffusionGemma상의 OpenJev를 참조하십시오.)
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기