我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
- 載入文本並執行 Tokenization:AI說書 - 從0開始 - 314 | 載入文本並執行 Tokenization
- 文本處理以降低 Tokenization 負擔:AI說書 - 從0開始 - 315 | 文本處理以降低 Tokenization 負擔
- Tokenization 後基本資訊窺探與 Embedding 訓練:AI說書 - 從0開始 - 316 | Tokenization 後基本資訊窺探與 Embedding 訓練
- Embedding 模型描述:AI說書 - 從0開始 - 317 | Embedding 模型描述
- Embedding 模型描述:AI說書 - 從0開始 - 318 | Embedding 模型描述
- 檢視 Embedding 是否包含某詞彙:AI說書 - 從0開始 - 319 | 檢視 Embedding 是否包含某詞彙
- Embedding 後詞彙相似度計算:AI說書 - 從0開始 - 320 | Embedding 後詞彙相似度計算
- Embedding 後詞彙與 ID 映射:AI說書 - 從0開始 - 321 | Embedding 後詞彙與 ID 映射
- Embedding 後詞彙的 Cosine 相似度計算:AI說書 - 從0開始 - 322 | Embedding 後詞彙的 Cosine 相似度計算
如果 Embedding 後,想透過 TensorFlow Projector 進行視覺化,需要兩份檔案:
- 包含 Embedding 的向量檔案,通常名為 vecs.tsv 的檔案
- 包含標籤元資料檔,在這裡即為 Word,通常名為 meta.tsv 的檔案
以下撰寫產出上述兩份檔案的程式:
import csv
import os
import numpy as np
LOG_DIR = '/content'
os.makedirs(LOG_DIR, exist_ok = True)
words = list(model.wv.key_to_index.keys())
vectors = [model.wv[word] for word in words]
with open(os.path.join(LOG_DIR, "vecs.tsv"), 'w', newline = '') as f:
writer = csv.writer(f, delimiter = '\t')
writer.writerows(vectors)
with open(os.path.join(LOG_DIR, "meta.tsv"), 'w', newline = '', encoding = 'utf-8') as f:
writer = csv.writer(f, delimiter = '\t')
writer.writerows([[word] for word in words])