我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
整理目前手上有的素材:
要預訓練模型自然要準備 GPU 資源,我們使用 Goolge Colab 環境 (詳見 使用Meta釋出的模型,實作Chat GPT - Part 0),並透過以下程式進行 GPU 確認:
!nvidia-smi
import torch
torch.cuda.is_available()
結果為:
接著進行定義模型參數 (撰寫 Config 檔):
from transformers import RobertaConfig, RobertaForCausalLM
config = RobertaConfig(vocab_size = 52000,
max_position_embeddings = 514,
num_attention_heads = 12,
num_hidden_layers = 6,
type_vocab_size = 1,
is_decoder = True) # Set up the model for potential seq2seq use, allowing for autoregressive outputs
當中的 type_voab_size,有以下配置情況:
至於 is_decoder = True 代表:An Autoregressive Model Continues a Sequence from the Last Token Onward
接著進行模型初始化:
model = RobertaForCausalLM(config = config)
再來配置 Hugging Face 預訓練的 Tokenizer:
from transformers import RobertaTokenizer
tokenizer = RobertaTokenizer.from_pretrained('roberta-base')
如果想要參閱此 Tokenizer 的特殊 Token,可以使用以下方式:
print("Special tokens:", tokenizer.special_tokens_map)
得到結果為: