tiktoken은 OpenAI 모델과 함께 사용할 수 있는 빠른 BPE 토크나이저입니다.
import tiktoken
enc = tiktoken . get_encoding ( "o200k_base" )
assert enc . decode ( enc . encode ( "hello world" )) == "hello world"
# To get the tokeniser corresponding to a specific model in the OpenAI API:
enc = tiktoken . encoding_for_model ( "gpt-4o" )
tiktoken
의 오픈 소스 버전은 PyPI에서 설치할 수 있습니다.
pip install tiktoken
토크나이저 API는 tiktoken/core.py
에 문서화되어 있습니다.
tiktoken
사용하는 예제 코드는 OpenAI Cookbook에서 찾을 수 있습니다.
tiktoken
은 유사한 오픈 소스 토크나이저보다 3~6배 빠릅니다.
성능은 tokenizers==0.13.2
, transformers==4.24.0
및 tiktoken==0.2.0
의 GPT2TokenizerFast
사용하여 GPT-2 토크나이저를 사용하여 1GB 텍스트에서 측정되었습니다.
이슈 트래커에 질문을 게시해 주세요.
OpenAI에서 작업하는 경우 내부 문서를 확인하거나 @shantanu에 언제든지 문의하세요.
언어 모델은 당신과 나처럼 텍스트를 보지 않고 대신 일련의 숫자(토큰이라고 함)를 봅니다. BPE(바이트 쌍 인코딩)는 텍스트를 토큰으로 변환하는 방법입니다. 여기에는 몇 가지 바람직한 속성이 있습니다.
tiktoken
에는 BPE 절차를 시각화하는 데 도움이 되는 코드를 포함하여 BPE의 세부 사항에 대해 자세히 알아보고 싶은 경우에 더 친숙한 교육용 하위 모듈이 포함되어 있습니다.
from tiktoken . _educational import *
# Train a BPE tokeniser on a small amount of text
enc = train_simple_encoding ()
# Visualise how the GPT-4 encoder encodes text
enc = SimpleBytePairEncoding . from_tiktoken ( "cl100k_base" )
enc . encode ( "hello world aaaaaaaaaaaa" )
새로운 인코딩을 지원하기 위해 tiktoken
확장할 수도 있습니다. 이를 수행하는 방법에는 두 가지가 있습니다.
원하는 방식으로 정확하게 Encoding
객체를 생성하고 간단히 전달하세요.
cl100k_base = tiktoken . get_encoding ( "cl100k_base" )
# In production, load the arguments directly instead of accessing private attributes
# See openai_public.py for examples of arguments for specific encodings
enc = tiktoken . Encoding (
# If you're changing the set of special tokens, make sure to use a different name
# It should be clear from the name what behaviour to expect.
name = "cl100k_im" ,
pat_str = cl100k_base . _pat_str ,
mergeable_ranks = cl100k_base . _mergeable_ranks ,
special_tokens = {
** cl100k_base . _special_tokens ,
"<|im_start|>" : 100264 ,
"<|im_end|>" : 100265 ,
}
)
tiktoken_ext
플러그인 메커니즘을 사용하여 Encoding
개체를 tiktoken
에 등록하세요.
이는 인코딩을 찾기 위해 tiktoken.get_encoding
이 필요한 경우에만 유용하며, 그렇지 않은 경우 옵션 1을 선호합니다.
이렇게 하려면 tiktoken_ext
아래에 네임스페이스 패키지를 생성해야 합니다.
tiktoken_ext/__init__.py
파일을 생략하여 다음과 같이 프로젝트 레이아웃을 지정하세요.
my_tiktoken_extension
├── tiktoken_ext
│ └── my_encodings.py
└── setup.py
my_encodings.py
ENCODING_CONSTRUCTORS
라는 변수를 포함하는 모듈이어야 합니다. 이는 인코딩 이름에서 인수를 사용하지 않고 해당 인코딩을 구성하기 위해 tiktoken.Encoding
에 전달할 수 있는 인수를 반환하는 함수에 대한 사전입니다. 예를 보려면 tiktoken_ext/openai_public.py
참조하세요. 정확한 세부정보는 tiktoken/registry.py
참조하세요.
setup.py
는 다음과 같아야 합니다.
from setuptools import setup , find_namespace_packages
setup (
name = "my_tiktoken_extension" ,
packages = find_namespace_packages ( include = [ 'tiktoken_ext*' ]),
install_requires = [ "tiktoken" ],
...
)
그런 다음 pip install ./my_tiktoken_extension
사용자 정의 인코딩을 사용할 수 있습니다! 편집 가능한 설치를 사용 하지 마십시오 .