インターネットに接続できない環境でtiktokenを使う
tiktokenで文字列をエンコードする時、
vocabulary定義をダウンロードするため、
インターネットに接続できない環境では、事前にダウンロードが必要になる。
このエントリでは、その手順を示す。
tiktoken | GitHub
https://github.com/openai/tiktoken
該当のダウンロード処理は、次のコードに記載されている。
https://github.com/openai/tiktoken/blob/main/tiktoken_ext/openai_public.py
事前のダウンロード
事前にインターネットに接続できる環境で、
tiktokenの処理を呼び出し、vocabulary定義をダウンロードする。
環境変数 TIKTOKEN_CACHE_DIR
に指定したパスにキャッシュが保存されるので、
環境変数を指定してダウンロード処理を呼ぶコードを実行する。
download.py
import tiktoken_ext.openai_public
import os
os.environ["TIKTOKEN_CACHE_DIR"] = "cache/"
for _, f in tiktoken_ext.openai_public.ENCODING_CONSTRUCTORS.items():
f()
実行コマンド
python download.py
ここでは cache/
配下にキャッシュが保存されることを確認できる。
$ ls cache/
0ea1e91bbb3a60f729a8dc8f777fd2fc07cd8df4
6c7ea1a7e38e3a7f062df639a5b80947f075ffe6
6d1cbeee0f20b3d9449abfede4726ed8212e3aee
9b5ad71b2ce5302211f9c61530b329a4922fc6a4
ec7223a39ce59f226a68acc30dc1af2788490e15
cache配下をアーカイブしておく。
tar czf cache.tar.gz cache/
キャッシュアーカイブの展開、処理の実行
インターネットに接続できない環境に cache.tar.gz
をコピーし展開する。
tar zxf cache.tar.gz
この状態であれば、インターネットに接続できない環境でも、
tiktokenを利用するコードを実行できる。
main.py
import tiktoken
import os
os.environ["TIKTOKEN_CACHE_DIR"] = "cache/"
encoding = tiktoken.get_encoding("cl100k_base")
tokens = encoding.encode("起立!気をつけ!こんにちは")
print(tokens)
実行コマンド
$ python main.py
[72718, 80195, 6447, 95221, 30512, 59739, 76622, 6447, 90115]
以上。