tiktoken离线加载bpe文件 cl100k_base

在使用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原理以及如何离线环境使用

你可能感兴趣的:(tiktoken)