TL;DR
unigram은 바이트와 단어를 일대일로 대응시켜 사람이 읽을 수 있는 식별자를 만들면서 바이트 수와 같은 토큰 비용을 목표로 하는 Rust 코덱입니다. 256개의 소문자 영어 단어를 여러 지정 토크나이저에서 공백 접두와 단독 형태 모두 한 토큰이 되도록 골라 4바이트부터 32바이트까지 비용을 일정하게 유지합니다. 200개 payload 측정에서는 hex·base64url·base58보다 평균과 최악 비용의 변동이 작았지만, GPT 어휘에 base64 조각이 포함된 탓에 o200k의 32바이트 비교에서는 base64url이 더 저렴했습니다. 고정 단어표와 canonical/recover 파서, CRC-8 검사형, 문맥별 전수 측정 스크립트가 함께 제공되므로 nonce와 correlation ID처럼 짧은 값에 맞고, 표 버전 기록 없이는 장기 저장에 사용할 수 없습니다.
섹션별 상세
use unigram::{UnigramId, CheckedUnigramId};
let id: UnigramId = UnigramId::try_random()?; // 32 fresh bits, 4 tokens
println!("{id}"); // "password email share building"
let returned = UnigramId::::parse(&text)?; // canonical: exact
let salvaged = UnigramId::::recover(&text)?; // tolerant: forgives a round trip
// One extra word of CRC-8, when a mutated value must not pass as a valid one.
let checked: CheckedUnigramId = CheckedUnigramId::try_random()?;Rust 코드가 32비트 식별자를 생성하고 단어열로 출력한 뒤, 엄격한 parse와 관대한 recover로 다시 읽는 흐름을 나타냅니다. CRC-8을 포함한 CheckedUnigramId는 변형된 값의 통과를 검사합니다.
uv run verify-alphabet.py고정된 단어표를 모든 지정 토크나이저에서 재측정하고 문맥별 토큰 비용을 점검하는 검증 명령입니다.
용어 해설
- 전단사 코덱(Bijective Codec)
- — 바이트 값과 단어열을 서로 중복 없이 일대일로 변환하는 인코딩 방식입니다. unigram은 각 바이트를 하나의 고정 단어에 대응시켜 인코딩하고, 같은 단어열을 다시 원래 바이트로 복원합니다. 값의 길이와 토큰 비용을 일정하게 유지하는 데 중요합니다.
- 토크나이저(Tokenizer)
- — 텍스트를 LLM이 처리하는 토큰 단위로 나누는 구성 요소입니다. 같은 문자열도 모델과 주변 문맥에 따라 토큰 수가 달라질 수 있어, 문자열 기반 식별자의 실제 비용을 좌우합니다. unigram은 여러 토크나이저에서 단어당 한 토큰이 되도록 단어 목록을 고정했습니다.
- CRC-8 오류 검출 코드(CRC-8)
- — 데이터가 전송되거나 복사되는 과정에서 변형됐는지 확인하는 8비트 검사용 값입니다. unigram의 CheckedUnigramId는 원래 바이트 값에 CRC-8 단어 하나를 추가해 잘못 바뀐 식별자가 유효한 값으로 통과하는 상황을 막습니다.
- 암호학적 안전 의사난수 생성기(CSPRNG)
- — 예측이 어려운 난수를 생성하는 운영체제 기반 난수원입니다. unigram은 실행 시 별도 런타임 의존성 없이 OS CSPRNG로 새 식별자의 바이트를 만들며, 생성된 바이트를 고정 단어표에 대응시킵니다.
- SentencePiece 토크나이저(SentencePiece)
- — 문자열을 서브워드 토큰으로 분할하는 토크나이징 방식입니다. 이 프로젝트는 특정 SentencePiece artifact를 Llama 계열 측정에 사용했으며, 글에 적힌 검증 대상이 모든 Llama 모델이나 같은 이름의 모든 모델을 뜻하지 않는다고 구분합니다.
기술
- Rust
- Cargo
- OS CSPRNG
- GPT-4o
- GPT-3.5/4
- GPT-3
- GPT-2
- Llama
- Claude
- SentencePiece
- Anthropic count_tokens API
활용 사례
- nonce 식별자
- correlation ID
- 프롬프트 내 추적 값
- 로그와 오류 메시지용 사람이 읽는 식별자
- 모델을 거친 문자열의 식별자 복구
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.