我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
回顧我們在AI說書 - 從0開始 - 6中說當Context長度是n,且每個字用d維度的向量表示時有以下結論:
這些資料出自於ChatGPT的關鍵技術 - Transformer的原始Google論文:Attention is All You Need, Vaswani et al. (2017)
現在目標是想要用Python來做模擬,且使用TPU當作運算資源。TPU是Google設計專門用來執行矩陣乘法、神經網路運算的設備,因此對Recurrent Layer的序列式運算較不擅長。
目前已經在AI說書 - 從0開始 - 12使用TPU對Attention Layer的模擬。
針對Recurrent Layer的程式配置為:
start_time = time.time()
hidden_state = np.zeros((n, d), dtype = np.float32)
for i in range(n):
for j in range(d):
for k in range(d):
hidden_state[i, j] += input_seq[i, j].numpy() * hidden_state[min(i, k), j]
computation_time = time.time() - start_time
if computation_time > attention_time * 10:
break
recurrent_time = time.time() - start_time
print(f"Recurrent layer computation time: {recurrent_time} seconds")
對此,執行結果為:
接著我們可以來計算一下百分比:
total = attention_time + recurrent_time
percentage_attention_time = round((attention_time / total) * 100, 2)
print(f"The percentage of self-attention computation in the sum of self-attention and recurrent computation is {percentage_attention_time}%")
對此,執行結果為: