ChatGPT-3 如何在离线模式计算机中使用tiktoken

kyvafyod  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(746)
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)

这会一直显示错误请求。exceptions.SSLError.由SSLError(SSLCertVerificationError(1,'[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:证书链中的自签名证书(_ssl.c:1002)’))。就像这样
我想运行这段代码来查看令牌的数量。但它一直显示错误,正如我前面提到的。我错过了什么代码?

monwx1rj

monwx1rj1#

今天也遇到了这个问题。不是完全相同的错误,但离线运行此解决方案应该是相同的。我们将下载必要的文件,然后“欺骗”tiktoken缓存它。
如果你有一台没有互联网接入的远程机器和一台有互联网接入的本地机器,这种方法就可以工作。
我在下面概述了一个通用的版本,但是你可以跳到tl;dr,如果您有更新版本的tiktoken并且正在使用cl100k_base tokenizer。

通用步骤

步骤一:获取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'

截至撰写本文时,cl100k_base的值应为https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken

第二步:下载

现在,导航到本地机器上的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://路径,您仍然使用该路径。

将remote上的文件重命名为该高速缓存_key

第四步:设置tiktoken缓存

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时都需要运行此代码片段。

第五步:使用tiktoken

恭喜,现在你可以使用tiktoken了

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

TL;更新tiktoken & cl100k_base的DR

应在撰写本文时起作用
1.本地计算机上的Download this file
1.重命名为9b5ad71b2ce5302211f9c61530b329a4922fc6a4
1.转移到您的远程机器中的文件夹称为“tiktoken_cache”
1.每次需要使用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"))

相关问题