如何在电脑离线模式下使用tiktoken

问题描述 投票:0回答:1
import tiktoken

tokenizer = tiktoken.get_encoding("cl100k_base") tokenizer = tiktoken.encoding_for_model("gpt-3.5-turbo")

text = "Hello, nice to meet you"

tokenizer.encode(text)

这一直显示名为 requests.exceptions.SSLError 的错误。由 SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:证书链中的自签名证书 (_ssl.c:1002)')) ... 像这样。

我想运行这段代码来查看令牌的数量。但是正如我之前提到的,它一直显示错误。我缺少什么代码?

python tokenize gpt-3
1个回答
0
投票

今天也遇到这个问题。不完全相同的错误,但离线运行此解决方案应该是相同的。我们将下载必要的文件,然后“欺骗”tiktoken 来缓存它。

如果您有一台无法访问互联网的远程计算机和一台可以访问互联网的本地计算机,则此方法有效。

我在下面概述了一个通用版本,但是如果您有更新版本的 tiktoken 并且正在使用

cl100k_base
分词器,您可以跳到 tl;dr。

广义步骤

第 1 步:获取 blob URL

首先,让我们从远程计算机上的源中获取分词器 blob URL。如果我们跟踪

get_encoding
函数,我们会发现它调用了
tiktoken_ext.openai_public
中的一个函数,该函数具有每个编码器的 blob URI。识别正确的函数,然后打印源代码

import tiktoken_ext.openai_public
import inspect

print(dir(tiktoken_ext.openai_public))
# The encoder we want is cl100k_base, we see this as a possible function

print(inspect.getsource(tiktoken_ext.openai_public.cl100k_base))
# The URL should be in the 'load_tiktoken_bpe function call'

截至撰写本文时,它应该是 https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken for cl100k_base

第二步:下载

现在,导航到本地计算机上的 blob URL 以下载它。

注意:对于旧版本的 tiktoken,第 1 步会为您生成一个 Azure blob URI(如

az://openaipublic/encodings/cl100k_base.tiktoken
);如果是这种情况,请前往最新来源 here 并获取仅供下载的非 azure 链接。

第三步:复制并重命名文件

现在,将文件传输到远程计算机的新文件夹中。跟踪 get_encoding 函数进一步揭示了对

tiktoken.load.read_file_cached()
的调用,这表明文件需要重命名。要获取文件的名称,请运行以下代码(从源代码中提取):

import hashlib

blobpath = "your_blob_url_here"
cache_key = hashlib.sha1(blobpath.encode()).hexdigest()
print(cache_key)

注意:

blobpath
是第一步发现的blob URL/URI;如果第 1 步有
az://
路径,您仍在使用该路径。

将远程文件重命名为 cache_key

第四步:设置抖音缓存

read_file_cached
函数然后检查缓存路径的环境变量并从那里读取,所以让我们设置它:

import os

tiktoken_cache_dir = "path_to_folder_containing_tiktoken_file"
os.environ["TIKTOKEN_CACHE_DIR"] = tiktoken_cache_dir

# validate
assert os.path.exists(os.path.join(tiktoken_cache_dir, cache_key))

注意:这不是tiktoken文件的完整路径,只是包含该文件的文件夹的路径

每次需要tiktoken时都需要运行此代码片段。

第五步:使用抖音

恭喜,你可以使用抖音了

encoding = tiktoken.get_encoding("cl100k_base")
encoding.encode("Hello, world")

TL;DR 用于更新的 tiktoken 和 cl100k_base

在撰写本文时应该有效

  1. 在本地计算机上下载此文件
  2. 重命名为
    9b5ad71b2ce5302211f9c61530b329a4922fc6a4
  3. 传输到名为“tiktoken_cache”的文件夹中的远程计算机
  4. 每次需要使用tiktoken时运行以下代码
import os

tiktoken_cache_dir = "path_to_tiktoken_cache_folder"
os.environ["TIKTOKEN_CACHE_DIR"] = tiktoken_cache_dir

# validate
assert os.path.exists(os.path.join(tiktoken_cache_dir,"9b5ad71b2ce5302211f9c61530b329a4922fc6a4"))
© www.soinside.com 2019 - 2024. All rights reserved.