在使用titoken的时候,如果在内网,不能联网的环境,就无法下载 cl100k_base 文件
tiktoken.encoding_for_model("gpt-3.5-turbo")
在 tiktoken_ext/openai_public.py,文件中,如果blobpath 为 “https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken”,
那么文件的hash就是 9b5ad71b2ce5302211f9c61530b329a4922fc6a4
def cl100k_base():
mergeable_ranks = load_tiktoken_bpe(
"https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken",
expected_hash="223921b76ee99bde995b7ff738513eef100fb51d18c93597a113bcffe865b2a7",
)
在 tiktoken/load.py 中,可以看到文件cache的存储路径,如果没有在环境变量中设置,默认使用了
os.path.join(tempfile.gettempdir(), “data-gym-cache”),
在Linux下是 “/tmp/data-gym-cache”,(可以自己验证路径)
那么找一台联网的机器,运行过tiktoken程序的机器,去找到
“/tmp/data-gym-cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4”
文件,copy到另一台机器上相同路径下即可。
如果都没有,那就用上面的url下载后改名即可。
def read_file_cached(blobpath: str, expected_hash: Optional[str] = None) -> bytes:
user_specified_cache = True
if "TIKTOKEN_CACHE_DIR" in os.environ:
cache_dir = os.environ["TIKTOKEN_CACHE_DIR"]
elif "DATA_GYM_CACHE_DIR" in os.environ:
cache_dir = os.environ["DATA_GYM_CACHE_DIR"]
else:
cache_dir = os.path.join(tempfile.gettempdir(), "data-gym-cache")
user_specified_cache = False
if cache_dir == "":
# disable caching
return read_file(blobpath)
cache_key = hashlib.sha1(blobpath.encode()).hexdigest()
当然,也可以设置通过设置环境变量的方式,存储在你喜欢的任何路径。
参考:tiktoken原理以及如何离线环境使用