tiktoken هو رمز BPE سريع للاستخدام مع نماذج OpenAI.
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
تم توثيق واجهة برمجة تطبيقات tokeniser في tiktoken/core.py
.
يمكن العثور على رمز المثال باستخدام tiktoken
في OpenAI Cookbook.
tiktoken
أسرع بما بين 3 إلى 6 مرات من رمز مميز مفتوح المصدر مشابه:
تم قياس الأداء على 1 جيجابايت من النص باستخدام رمز GPT-2، باستخدام GPT2TokenizerFast
من tokenizers==0.13.2
و transformers==4.24.0
و tiktoken==0.2.0
.
يرجى نشر الأسئلة في تعقب القضية.
إذا كنت تعمل في 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
وستتمكن من استخدام الترميزات المخصصة الخاصة بك! تأكد من عدم استخدام تثبيت قابل للتحرير.