๐๏ธ ๅคงๆจกๅๆถๆใ่ฎญ็ปไธ้จ็ฝฒ
1. ๅคงๆจกๅๆถๆไธ่ฎญ็ป
Transformer ๆฏ็ฐไปฃๅคง่ฏญ่จๆจกๅ็ๅบ็กๆถๆ๏ผ็ฑ Google ๅจ 2017
ๅนด็่ฎบๆใAttention Is All You Needใไธญๆๅบใ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Transformer ๆถๆ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โ โ Encoder โ โ Decoder โ โ
โ โ (็่งฃ่พๅ
ฅ) โ โ โ (็ๆ่พๅบ) โ โ
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โ โ
โ ๆฏไธช Block ๅ
ๅซ๏ผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Multi-Head Self-Attention โ โ ๆๆไพ่ตๅ
ณ็ณป โ
โ โ โ โ โ
โ โ Add & Norm (ๆฎๅทฎ่ฟๆฅ + ๅฑๅฝไธๅ) โ โ
โ โ โ โ โ
โ โ Feed Forward Network โ โ ็นๅพๅๆข โ
โ โ โ โ โ
โ โ Add & Norm โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
1.2 ไธ็งไธปๆตๆถๆ
| Encoder-Only |
BERT, RoBERTa |
ๅๅๆณจๆๅ๏ผ็่งฃ่ฝๅๅผบ |
ๆๆฌๅ็ฑปใNERใ้ฎ็ญ |
| Decoder-Only |
GPT, LLaMA, Qwen |
่ชๅๅฝ็ๆ๏ผๅๅๆณจๆๅ |
ๆๆฌ็ๆใๅฏน่ฏ |
| Encoder-Decoder |
T5, BART |
็ผ็ ็่งฃ + ่งฃ็ ็ๆ |
็ฟป่ฏใๆ่ฆ |
ๆถๆๅฏนๆฏ๏ผ
Encoder-Only (BERT):
่พๅ
ฅ: [CLS] ๆ ็ฑ ๅไบฌ [SEP]
โโโโโโโโโโโโโโโโโโโโโโ (ๅๅๆณจๆๅ)
Decoder-Only (GPT):
่พๅ
ฅ: ๆ ็ฑ ๅไบฌ
โโโโโโโโโโ (ๅๅๆณจๆๅ๏ผๅช็ๅทฆ่พน)
Encoder-Decoder (T5):
Encoder: [็่งฃ่พๅ
ฅ] โโโ Decoder: [็ๆ่พๅบ]
1.3 ๅคงๆจกๅ่ฎญ็ปๆต็จ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅคงๆจกๅ่ฎญ็ปไธ้ถๆฎต โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ้ถๆฎตไธ๏ผ้ข่ฎญ็ป (Pre-training) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ๆฐๆฎ๏ผTB็บงไบ่็ฝๆๆฌ๏ผ็ฝ้กตใไนฆ็ฑใไปฃ็ ...๏ผ โ โ
โ โ ็ฎๆ ๏ผNext Token Prediction๏ผ้ขๆตไธไธไธช่ฏ๏ผ โ โ
โ โ ่งๆจก๏ผๆฐๅGPU๏ผ่ฎญ็ปๆฐๅจๅฐๆฐๆ โ โ
โ โ ไบงๅบ๏ผBase Model๏ผๅบๅบงๆจกๅ๏ผ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ ้ถๆฎตไบ๏ผ็็ฃๅพฎ่ฐ (Supervised Fine-Tuning, SFT) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ๆฐๆฎ๏ผ้ซ่ดจ้ๆไปค-ๅ็ญๅฏน๏ผ10ไธ~100ไธๆก๏ผ โ โ
โ โ ็ฎๆ ๏ผๅญฆไน ้ตๅพชๆไปคใ็ๆๆๅธฎๅฉ็ๅ็ญ โ โ
โ โ ไบงๅบ๏ผSFT Model โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ ้ถๆฎตไธ๏ผๅฏน้ฝ่ฎญ็ป (Alignment) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ๆนๆณ๏ผRLHF / DPO / RLAIF โ โ
โ โ ็ฎๆ ๏ผไธไบบ็ฑปๅๅฅฝๅฏน้ฝ๏ผๅฎๅ
จใๆๅธฎๅฉใ่ฏๅฎ โ โ
โ โ ไบงๅบ๏ผChat Model๏ผๅฏๅฏน่ฏ็ๆจกๅ๏ผ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
1.4 ้ข่ฎญ็ปๅ
ณ้ฎๆๆฏ
1.4.1 ๆณจๆๅๆบๅถไผๅ
| Multi-Head Attention |
ๅคไธชๆณจๆๅๅคดๅนถ่ก่ฎก็ฎ |
ๆๆไธๅๅญ็ฉบ้ด็ไฟกๆฏ |
| Flash Attention |
IO-aware ็ฒพ็กฎๆณจๆๅ็ฎๆณ |
ๆพๅญๅๅฐ๏ผ้ๅบฆๆๅ 2-4x |
| GQA (Grouped Query) |
KV Cache ๅ็ปๅ
ฑไบซ |
ๆจ็ๆ็ๆๅ |
| MQA (Multi-Query) |
ๆๆๅคดๅ
ฑไบซ KV |
ๆ่ดๆจ็ๆ็ |
| Sliding Window |
ๅฑ้จๆณจๆๅ็ชๅฃ |
ๆฏๆๆด้ฟไธไธๆ |
1.4.2 ไฝ็ฝฎ็ผ็
# ไธปๆตไฝ็ฝฎ็ผ็ ๆนๆก
ไฝ็ฝฎ็ผ็ ๆนๆกๅฏนๆฏ๏ผ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๆนๆก โ ็น็น โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ็ปๅฏนไฝ็ฝฎ็ผ็ โ ็ฎๅ๏ผไฝๅคๆจ่ฝๅๅทฎ โ
โ (Sinusoidal) โ ็จไบๅๅง Transformer โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ๅฏๅญฆไน ไฝ็ฝฎ็ผ็ โ GPT ็ณปๅ้็จ โ
โ (Learned) โ ็ตๆดปไฝๆณๅๅ้ไบ่ฎญ็ป้ฟๅบฆ โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ RoPE โ LLaMA/Qwen ้็จ โ
โ (ๆ่ฝฌไฝ็ฝฎ็ผ็ ) โ ๅคๆจ่ฝๅๅผบ๏ผๆฏๆ้ฟๆๆฌ โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ALiBi โ BLOOM ้็จ โ
โ (็บฟๆงๅ็ฝฎ) โ ๆ ้่ฎญ็ป๏ผๅคๆจ่ฝๅๅฅฝ โ
โโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
1.4.3 ่ฎญ็ปไผๅๆๆฏ
| ๆททๅ็ฒพๅบฆ่ฎญ็ป (FP16/BF16) |
ๅๅฐๆพๅญ๏ผๅ ้่ฎก็ฎ |
BF16 ๆฐๅผ็จณๅฎๆงๆดๅฅฝ |
| ๆขฏๅบฆ็ดฏ็งฏ |
ๆจกๆๆดๅคง batch size |
ๆพๅญๅ้ๆถไฝฟ็จ |
| ๆขฏๅบฆๆฃๆฅ็น |
็จ่ฎก็ฎๆขๆพๅญ |
้่ฎก็ฎ้จๅๆฟๆดปๅผ |
| ZeRO ไผๅ |
ๅๅธๅผๆพๅญไผๅ |
DeepSpeed ไธ้ถๆฎต |
| ๅผ ้ๅนถ่ก (TP) |
ๅๅๆจกๅๅฑ |
ๅๆบๅคๅก |
| ๆตๆฐด็บฟๅนถ่ก (PP) |
ๅๅๆจกๅๅฑๅบๅ |
ๅคๆบ่ฎญ็ป |
| ๆฐๆฎๅนถ่ก (DP) |
ๆฐๆฎๅ็ |
ๆๅบ็ก็ๅนถ่ก |
1.5 ้ข่ฎญ็ปไปฃ็ ็คบไพ
# ไฝฟ็จ Hugging Face Transformers ้ข่ฎญ็ป็คบไพ
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
TrainingArguments,
Trainer,
DataCollatorForLanguageModeling
)
from datasets import load_dataset
# 1. ๅ ่ฝฝๆจกๅๅๅ่ฏๅจ
model_name = "gpt2" # ๆ่ชๅฎไนๆถๆ
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# 2. ๅ ่ฝฝๆฐๆฎ้
dataset = load_dataset("wikitext", "wikitext-2-raw-v1")
# 3. ๆฐๆฎ้ขๅค็
def tokenize_function(examples):
return tokenizer(examples["text"], truncation=True, max_length=512)
tokenized_dataset = dataset.map(tokenize_function, batched=True)
# 4. ่ฎญ็ป้
็ฝฎ
training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=8,
gradient_accumulation_steps=4,
learning_rate=5e-5,
warmup_steps=500,
weight_decay=0.01,
fp16=True, # ๆททๅ็ฒพๅบฆ
logging_steps=100,
save_steps=1000,
)
# 5. ๆฐๆฎๆด็ๅจ
data_collator = DataCollatorForLanguageModeling(
tokenizer=tokenizer, mlm=False # CLM ไปปๅก
)
# 6. ่ฎญ็ป
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_dataset["train"],
data_collator=data_collator,
)
trainer.train()
2. ๅคงๆจกๅๅฏน้ฝไธไผๅๆๆฏ
2.1 ไปไนๆฏๅฏน้ฝ๏ผAlignment๏ผ๏ผ
ๅฏน้ฝๆฏๆ่ฎฉๆจกๅ็่พๅบ็ฌฆๅไบบ็ฑป็ๆๆๅไปทๅผ่ง๏ผๅ
ๆฌ๏ผ -
ๆๅธฎๅฉ๏ผHelpful๏ผ๏ผๆไพๆ็จใๅ็กฎ็ไฟกๆฏ -
่ฏๅฎ๏ผHonest๏ผ๏ผไธ็ผ้ ไฟกๆฏ๏ผๆฟ่ฎคไธ็กฎๅฎๆง -
ๆ ๅฎณ๏ผHarmless๏ผ๏ผไธไบง็ๆๅฎณใๅ่งๅ
ๅฎน
2.2
RLHF๏ผๅบไบไบบ็ฑปๅ้ฆ็ๅผบๅๅญฆไน ๏ผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ RLHF ๆต็จ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Step 1: ๆถ้ไบบ็ฑปๅๅฅฝๆฐๆฎ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Prompt โ ๆจกๅ็ๆๅคไธชๅ็ญ โ ไบบ็ฑปๆ ๆณจๆๅบ โ โ
โ โ ไพ๏ผๅ็ญA > ๅ็ญB > ๅ็ญC โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ Step 2: ่ฎญ็ปๅฅๅฑๆจกๅ (Reward Model) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ่พๅ
ฅ๏ผ(prompt, response) โ ่พๅบ๏ผๅฅๅฑๅๆฐ โ โ
โ โ ๅญฆไน ้ขๆตไบบ็ฑปๅๅฅฝ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ Step 3: PPO ๅผบๅๅญฆไน ไผๅ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ็ญ็ฅๆจกๅ็ๆๅ็ญ โ ๅฅๅฑๆจกๅๆๅ โ ๆดๆฐ็ญ็ฅ โ โ
โ โ + KL ๆฃๅบฆ็บฆๆ๏ผ้ฒๆญขๅ็ฆปๅๆจกๅๅคช่ฟ๏ผ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2.3 DPO๏ผ็ดๆฅๅๅฅฝไผๅ๏ผ
DPO ๆฏ RLHF ็็ฎๅๆฟไปฃๆนๆก๏ผๆ ้ๅ็ฌ่ฎญ็ปๅฅๅฑๆจกๅใ
# DPO ๆ ธๅฟๆๆณ
"""
RLHF: SFT Model โ Reward Model โ PPO โ Aligned Model
DPO: SFT Model โ ็ดๆฅไผๅ โ Aligned Model
DPO ๆๅคฑๅฝๆฐ๏ผ
L_DPO = -log ฯ(ฮฒ * (log ฯ(y_w|x) - log ฯ(y_l|x)
- log ฯ_ref(y_w|x) + log ฯ_ref(y_l|x)))
ๅ
ถไธญ๏ผ
- y_w: ๅๅฅฝ็ๅ็ญ (winner)
- y_l: ไธๅๅฅฝ็ๅ็ญ (loser)
- ฯ: ๅฝๅ็ญ็ฅ
- ฯ_ref: ๅ่็ญ็ฅ๏ผSFTๆจกๅ๏ผ
- ฮฒ: ๆธฉๅบฆๅๆฐ
"""
| RLHF |
ๆๆๅฅฝ๏ผไธ็้ช่ฏๅ
ๅ |
ๅคๆ๏ผ้่ฆ่ฎญ็ปๅฅๅฑๆจกๅ |
| DPO |
็ฎๅ๏ผๆ ้ๅฅๅฑๆจกๅ |
ๅฏนๆฐๆฎ่ดจ้่ฆๆฑ้ซ |
| RLAIF |
็จAIไปฃๆฟไบบ็ฑปๆ ๆณจ |
ไพ่ต่พ
ๅฉๆจกๅ่ดจ้ |
2.4 ๆ็คบๅทฅ็จ๏ผPrompt
Engineering๏ผ
ๆ็คบๅทฅ็จๆฏไธ็งๆ ้่ฎญ็ปๅณๅฏไผๅๆจกๅ่พๅบ็ๆๆฏใ
2.4.1 ๆ ธๅฟๆๅทง
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๆ็คบๅทฅ็จๆๅทงๅคงๅ
จ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ๐ญ ่ง่ฒ่ฎพๅฎ (Role Prompting) โ
โ "ไฝ ๆฏไธไฝ่ตๆทฑ็Pythonๅผๅไธๅฎถ๏ผๆ
้ฟไปฃ็ ไผๅ..." โ
โ โ
โ ๐ ๆไปคๆธ
ๆฐๅ โ
โ "่ฏท็จไธญๆๅ็ญ๏ผๅ็นๅๅบ๏ผๆฏ็นไธ่ถ
่ฟ50ๅญ" โ
โ โ
โ ๐ ๆ ผๅผ็บฆๆ โ
โ "่ฏทไปฅJSONๆ ผๅผ่ฟๅ็ปๆ๏ผๅ
ๅซnameใageใcityๅญๆฎต" โ
โ โ
โ ๐ก ๆ็ปด้พ (Chain of Thought, CoT) โ
โ "่ฎฉๆไปฌไธๆญฅไธๆญฅๆ่่ฟไธช้ฎ้ข..." โ
โ โ
โ ๐ ๅฐๆ ทๆฌๅญฆไน (Few-shot Learning) โ
โ "็คบไพ1๏ผ่พๅ
ฅXX โ ่พๅบYY โ
โ ็คบไพ2๏ผ่พๅ
ฅAA โ ่พๅบBB โ
โ ็ฐๅจ่ฏทๅค็๏ผ่พๅ
ฅCC โ ?" โ
โ โ
โ ๐ ่ชๆไธ่ดๆง (Self-Consistency) โ
โ ๅคๆฌก้ๆ ท๏ผๆ็ฅจ้ๆฉๆไธ่ด็็ญๆก โ
โ โ
โ ๐ณ ๆ็ปดๆ (Tree of Thoughts) โ
โ ๆข็ดขๅคๆกๆจ็่ทฏๅพ๏ผ่ฏไผฐ้ๆฉๆไผ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2.4.2 Prompt ๆจกๆฟ็คบไพ
# ็ณป็ป็บง Prompt ๆจกๆฟ
SYSTEM_PROMPT = """
ไฝ ๆฏไธไธชไธไธ็{role}๏ผๅ
ทๆไปฅไธ็น็น๏ผ
1. {characteristic_1}
2. {characteristic_2}
3. {characteristic_3}
ๅจๅ็ญ้ฎ้ขๆถ๏ผ่ฏท้ตๅพชไปฅไธๅๅ๏ผ
- {principle_1}
- {principle_2}
- {principle_3}
่พๅบๆ ผๅผ่ฆๆฑ๏ผ
{output_format}
"""
# Chain of Thought ๆจกๆฟ
COT_PROMPT = """
้ฎ้ข๏ผ{question}
่ฏทๆไปฅไธๆญฅ้ชคๆ่๏ผ
1. ้ฆๅ
๏ผ็่งฃ้ฎ้ข็ๆ ธๅฟๆฏไปไน
2. ็ถๅ๏ผๅๆๅทฒ็ฅๆกไปถ
3. ๆฅ็๏ผๅถๅฎ่งฃๅณๆนๆก
4. ๆๅ๏ผ็ปๅบ็ญๆก
่ฎฉๆไปฌๅผๅง๏ผ
"""
# Few-shot ๆจกๆฟ
FEW_SHOT_PROMPT = """
ไปปๅก๏ผ{task_description}
็คบไพ1๏ผ
่พๅ
ฅ๏ผ{example_1_input}
่พๅบ๏ผ{example_1_output}
็คบไพ2๏ผ
่พๅ
ฅ๏ผ{example_2_input}
่พๅบ๏ผ{example_2_output}
็ฐๅจ่ฏทๅค็๏ผ
่พๅ
ฅ๏ผ{actual_input}
่พๅบ๏ผ
"""
2.4.3 ้ซ็บง Prompt ๆๆฏ
| ReAct |
ๆจ็+่กๅจไบคๆฟ |
Agent ไปปๅก |
| Reflexion |
่ชๆๅๆๆน่ฟ |
ๅคๆๆจ็ |
| Plan-and-Solve |
ๅ
่งๅๅๆง่ก |
ๅคๆญฅ้ชคไปปๅก |
| Least-to-Most |
ไป็ฎๅฐ็นๅ่งฃ |
ๅคๆ้ฎ้ข |
| Skeleton-of-Thought |
ๅ
้ชจๆถๅๅกซๅ
|
้ฟๆๆฌ็ๆ |
3. ๅคงๆจกๅๅพฎ่ฐ
3.1 ๅพฎ่ฐๆนๆณๆฆ่ง
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅพฎ่ฐๆนๆณ่ฐฑ็ณป โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ๆๅๆฐๆดๆฐ่ๅด๏ผ โ
โ โ
โ ๅ
จๅๆฐๅพฎ่ฐ (Full Fine-tuning) โ
โ โโโ ๆดๆฐๆๆๅๆฐ โ
โ โโโ ๆๆๆๅฅฝ๏ผไฝๆๆฌๆ้ซ โ
โ โโโ ้่ฆๅคง้ๆพๅญๅ่ฎก็ฎ่ตๆบ โ
โ โ
โ ๅๆฐ้ซๆๅพฎ่ฐ (PEFT) โ
โ โโโ LoRA๏ผไฝ็งฉ้้
โ
โ โโโ QLoRA๏ผ้ๅ + LoRA โ
โ โโโ Prefix Tuning๏ผๅ็ผ่ฐไผ โ
โ โโโ P-Tuning v2๏ผๆทฑๅบฆๆ็คบ่ฐไผ โ
โ โโโ Adapter๏ผ้้
ๅจๅฑ โ
โ โโโ IA3๏ผๆๅถๅๆพๅคงๅ
้จๆฟๆดป โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
3.2 LoRA ่ฏฆ่งฃ
LoRA (Low-Rank Adaptation) ๆฏๆๆต่ก็ๅๆฐ้ซๆๅพฎ่ฐๆนๆณใ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ LoRA ๅ็ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ๅๅงๆ้็ฉ้ต W (d ร k) โ
โ โ
โ โโโโโโโโโโโโโโโโโ โ
โ x โโโโ W (ๅป็ป) โโโโ y โ
โ โโโโโโโโโโโโโโโโโ โ
โ + โ
โ โโโโโโโ โโโโโโโ โ
โ x โโโโ A โโโโโ B โโโโ ฮy โ
โ โโโโโโโ โโโโโโโ โ
โ (d ร r) (r ร k) โ
โ โ
โ ๆ็ป่พๅบ๏ผy' = Wx + BAx โ
โ โ
โ ๆ ธๅฟๆๆณ๏ผ โ
โ - ๅป็ปๅๅงๆ้ W โ
โ - ๆฐๅขไฝ็งฉ็ฉ้ต AใB (r << d, k) โ
โ - ๅช่ฎญ็ป AใB๏ผๅๆฐ้ๅคงๅน
ๅๅฐ โ
โ - ไพ๏ผr=8 ๆถ๏ผๅๆฐ้ๅๅฐ ~10000 ๅ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
3.3 ๅพฎ่ฐๅฎ่ทตไปฃ็
3.3.1 ไฝฟ็จ PEFT + LoRA ๅพฎ่ฐ
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments
from peft import LoraConfig, get_peft_model, TaskType
from trl import SFTTrainer
from datasets import load_dataset
# 1. ๅ ่ฝฝๅบๅบงๆจกๅ
model_name = "meta-llama/Llama-2-7b-hf"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token
# 2. ้
็ฝฎ LoRA
lora_config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
r=8, # ไฝ็งฉ็ปดๅบฆ
lora_alpha=32, # ็ผฉๆพๅ ๅญ
lora_dropout=0.1, # Dropout
target_modules=[ # ่ฆ้้
็ๆจกๅ
"q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj"
],
)
# 3. ๅบ็จ LoRA
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# ่พๅบ๏ผtrainable params: 4,194,304 || all params: 6,742,609,920 || trainable%: 0.0622
# 4. ๅๅคๆฐๆฎ้
dataset = load_dataset("json", data_files="train_data.json")
def format_instruction(example):
return f"""### ๆไปค๏ผ
{example['instruction']}
### ๅ็ญ๏ผ
{example['output']}"""
# 5. ่ฎญ็ป้
็ฝฎ
training_args = TrainingArguments(
output_dir="./lora_output",
num_train_epochs=3,
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=2e-4,
fp16=True,
logging_steps=10,
save_strategy="epoch",
warmup_ratio=0.03,
)
# 6. ่ฎญ็ป
trainer = SFTTrainer(
model=model,
args=training_args,
train_dataset=dataset["train"],
formatting_func=format_instruction,
max_seq_length=512,
)
trainer.train()
# 7. ไฟๅญ LoRA ๆ้
model.save_pretrained("./lora_weights")
3.3.2 ไฝฟ็จ QLoRA ๅพฎ่ฐ๏ผๆพๅญๆด็๏ผ
from transformers import BitsAndBytesConfig
import torch
# 4-bit ้ๅ้
็ฝฎ
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_use_double_quant=True,
)
# ๅ ่ฝฝ้ๅๆจกๅ
model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=bnb_config,
device_map="auto"
)
# ๅ็ปญไธ LoRA ็ธๅ...
3.4 ๅพฎ่ฐๆนๆณๅฏนๆฏ
| Full Fine-tuning |
100% |
ๆ้ซ |
ๆๅฅฝ |
ๅ
่ถณ่ตๆบ |
| LoRA |
~0.1% |
ไธญ็ญ |
ๅพๅฅฝ |
้็จๅบๆฏ |
| QLoRA |
~0.1% |
ไฝ |
่พๅฅฝ |
ๆพๅญๅ้ |
| Prefix Tuning |
~0.01% |
ไฝ |
ไธ่ฌ |
็ฎๅไปปๅก |
| Adapter |
~1% |
ไธญไฝ |
่พๅฅฝ |
ๅคไปปๅก |
3.5 ๅพฎ่ฐๆฐๆฎๆ ผๅผ
# Alpaca ๆ ผๅผ๏ผๆๅธธ็จ๏ผ
{
"instruction": "ๅฐไปฅไธๅฅๅญ็ฟป่ฏๆ่ฑๆ",
"input": "ไปๅคฉๅคฉๆฐๅพๅฅฝ",
"output": "The weather is nice today."
}
# ShareGPT ๆ ผๅผ๏ผๅค่ฝฎๅฏน่ฏ๏ผ
{
"conversations": [
{"from": "human", "value": "ไฝ ๅฅฝ"},
{"from": "gpt", "value": "ไฝ ๅฅฝ๏ผๆไปไนๆๅฏไปฅๅธฎๅฉไฝ ็ๅ๏ผ"},
{"from": "human", "value": "ไป็ปไธไธๅไบฌ"},
{"from": "gpt", "value": "ๅไบฌๆฏไธญๅฝ็้ฆ้ฝ..."}
]
}
# OpenAI ๆ ผๅผ
{
"messages": [
{"role": "system", "content": "ไฝ ๆฏไธไธชๆๅธฎๅฉ็ๅฉๆ"},
{"role": "user", "content": "ไฝ ๅฅฝ"},
{"role": "assistant", "content": "ไฝ ๅฅฝ๏ผๆไปไนๅฏไปฅๅธฎไฝ ็๏ผ"}
]
}
4. ๅคงๆจกๅๆจ็ไธ้จ็ฝฒ
4.1 ๆจ็ไผๅๆๆฏ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๆจ็ไผๅๆๆฏๆ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ๐ข ๆจกๅๅ็ผฉ โ
โ โโโ ้ๅ (Quantization) โ
โ โ โโโ INT8๏ผ็ฒพๅบฆๆๅคฑๅฐ๏ผๆจ็ๅฟซ 2x โ
โ โ โโโ INT4๏ผ็ฒพๅบฆๆๆ๏ผๆพๅญ็ 4x โ
โ โ โโโ GPTQ/AWQ/GGUF๏ผไธๅ้ๅๆนๆก โ
โ โโโ ๅชๆ (Pruning) โ
โ โ โโโ ็งป้คไธ้่ฆ็ๅๆฐ โ
โ โโโ ่ธ้ฆ (Distillation) โ
โ โโโ ๅคงๆจกๅ็ฅ่ฏ่ฟ็งปๅฐๅฐๆจกๅ โ
โ โ
โ โก ๆจ็ๅ ้ โ
โ โโโ KV Cache๏ผ็ผๅญๆณจๆๅ้ฎๅผๅฏน โ
โ โโโ Flash Attention๏ผ้ซๆๆณจๆๅ่ฎก็ฎ โ
โ โโโ Continuous Batching๏ผๅจๆๆนๅค็ โ
โ โโโ Speculative Decoding๏ผๆจๆต่งฃ็ โ
โ โโโ PagedAttention๏ผๅ้กตๆณจๆๅ (vLLM) โ
โ โ
โ ๐ฅ๏ธ ็กฌไปถไผๅ โ
โ โโโ TensorRT๏ผNVIDIA GPU ไผๅ โ
โ โโโ ONNX Runtime๏ผ่ทจๅนณๅฐๅ ้ โ
โ โโโ ็ฎๅญ่ๅ๏ผๅๅฐๅ
ๅญ่ฎฟ้ฎ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
4.2 ้ๅ่ฏฆ่งฃ
| FP16 |
16-bit |
2x |
ๅ ไนๆ |
่ฎญ็ป/ๆจ็ |
| BF16 |
16-bit |
2x |
ๅ ไนๆ |
่ฎญ็ป/ๆจ็ |
| INT8 |
8-bit |
4x |
ๅพๅฐ |
ๆจ็ |
| INT4 |
4-bit |
8x |
่พๅฐ |
ๆจ็ |
| GPTQ |
4-bit |
8x |
ๅฐ |
GPU ๆจ็ |
| AWQ |
4-bit |
8x |
ๆดๅฐ |
GPU ๆจ็ |
| GGUF |
2-8bit |
ๅฏๅ |
ๅฏๅ |
CPU/ๆททๅๆจ็ |
# ไฝฟ็จ bitsandbytes ้ๅๅ ่ฝฝ
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
# INT8 ้ๅ
model_8bit = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b-hf",
load_in_8bit=True,
device_map="auto"
)
# INT4 ้ๅ
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16,
)
model_4bit = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b-hf",
quantization_config=bnb_config,
device_map="auto"
)
4.3 ้จ็ฝฒๆนๆก
4.3.1 ้จ็ฝฒๆกๆถๅฏนๆฏ
| vLLM |
PagedAttention๏ผๅๅ้้ซ |
้ซๅนถๅๅจ็บฟๆๅก |
| TGI |
HuggingFace ๅฎๆน๏ผๅ่ฝๅ
จ้ข |
็ไบง็ฏๅข |
| Ollama |
็ฎๅๆ็จ๏ผๆฌๅฐ้จ็ฝฒ |
ไธชไบบ/ๅผๅ |
| llama.cpp |
็บฏ CPU ๆจ็๏ผ่ทจๅนณๅฐ |
่พน็ผ่ฎพๅค |
| TensorRT-LLM |
NVIDIA ไผๅ๏ผๆ่ดๆง่ฝ |
้ซๆง่ฝ GPU |
| OpenLLM |
็ตๆดป๏ผๆฏๆๅคๆจกๅ |
ๆจกๅๆๅกๅ |
4.3.2 vLLM ้จ็ฝฒ็คบไพ
# ๅฎ่ฃ
๏ผpip install vllm
from vllm import LLM, SamplingParams
# 1. ๅ ่ฝฝๆจกๅ
llm = LLM(
model="meta-llama/Llama-2-7b-chat-hf",
tensor_parallel_size=1, # GPU ๆฐ้
dtype="float16",
max_model_len=4096,
)
# 2. ่ฎพ็ฝฎ้ๆ ทๅๆฐ
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.9,
max_tokens=512,
)
# 3. ๆจ็
prompts = ["่ฏทไป็ปไธไธไบบๅทฅๆบ่ฝ", "Pythonๆไปไนไผ็น๏ผ"]
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
print(output.outputs[0].text)
# vLLM ๅฏๅจ API ๆๅก
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-2-7b-chat-hf \
--port 8000 \
--tensor-parallel-size 1
4.3.3 Ollama ๆฌๅฐ้จ็ฝฒ
# ๅฎ่ฃ
Ollama
curl -fsSL https://ollama.com/install.sh | sh
# ไธ่ฝฝๅนถ่ฟ่กๆจกๅ
ollama pull llama3
ollama run llama3
# ไฝฟ็จ API
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "ไปไนๆฏๅคง่ฏญ่จๆจกๅ๏ผ"
}'
# Python ่ฐ็จ Ollama
import ollama
response = ollama.chat(
model='llama3',
messages=[{'role': 'user', 'content': 'ไฝ ๅฅฝ'}]
)
print(response['message']['content'])
4.4 ้จ็ฝฒๆถๆ่ฎพ่ฎก
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ็ไบง็บง LLM ้จ็ฝฒๆถๆ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ็จๆท่ฏทๆฑ โ
โ โ โ
โ โโโโโโโโโโโโโโโ โ
โ โ API ็ฝๅ
ณ โ โ ่ฎค่ฏใ้ๆตใ่ทฏ็ฑ โ
โ โโโโโโโโฌโโโโโโโ โ
โ โ โ
โ โ โ
โ โโโโโโโโโโโโโโโ โ
โ โ ่ด่ฝฝๅ่กก โ โ ๅๅ่ฏทๆฑๅฐไธๅๅฎไพ โ
โ โโโโโโโโฌโโโโโโโ โ
โ โ โ
โ โโโโโโดโโโโโ โ
โ โ โ โ
โ โโโโโโโโ โโโโโโโโ โ
โ โๆจ็1 โ โๆจ็2 โ โ vLLM/TGI ๅฎไพ โ
โ โ(GPU) โ โ(GPU) โ โ
โ โโโโโโโโ โโโโโโโโ โ
โ โ โ โ
โ โโโโโโฌโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโ โ
โ โ ๆจกๅๅญๅจ โ โ S3/ๆฌๅฐ/ๆจกๅไปๅบ โ
โ โโโโโโโโโโโโโโโ โ
โ โ
โ ็ๆง็ปไปถ๏ผPrometheus + Grafana โ
โ ๆฅๅฟ็ปไปถ๏ผELK Stack โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
5. ๅ
ถไป่ฎญ็ปไธไผๅ็ธๅ
ณ็ฅ่ฏ
5.1 ๆฐๆฎๅทฅ็จ
5.1.1 ๆฐๆฎ่ดจ้็้่ฆๆง
ๆฐๆฎ่ดจ้้ๅญๅก๏ผ
โโโโโโโโโโโ
โ ้ซ่ดจ้ โ โ ไบบๅทฅๆ ๆณจใไธๅฎถๆ ก้ช
โ ๆฐๆฎ โ ๆๆๆๅฅฝ๏ผๆๆฌๆ้ซ
โโโโโโโโโโโค
โ ๅๆๆฐๆฎ โ โ GPT-4 ็ๆใ่ชๆๆไปค
โ โ ๅนณ่กกๆๆไธๆๆฌ
โโโโโโโโโโโค
โ ็ฝ็ปๆฐๆฎ โ โ CommonCrawlใ็ฝ้กต็ฌๅ
โ โ ้ๅคง่ดจไฝ๏ผ้่ฆๆธ
ๆด
โโโโโโโโโโโ
5.1.2 ๆฐๆฎๅค็ๆต็จ
# ๆฐๆฎๅค็ Pipeline
data_pipeline = {
"1. ๆฐๆฎๆถ้": [
"็ฌๅ็ฝ้กตๆฐๆฎ",
"ๆถ้ๅผๆบๆฐๆฎ้",
"็ๆๅๆๆฐๆฎ"
],
"2. ๆฐๆฎๆธ
ๆด": [
"ๅป้๏ผMinHashใSimHash๏ผ",
"่ฟๆปคไฝ่ดจ้ๅ
ๅฎน",
"็งป้คๆๅฎณ/ๆๆไฟกๆฏ",
"่ฏญ่จๆฃๆตไธๅ็ฑป"
],
"3. ๆฐๆฎๅค็": [
"ๅ่ฏ Tokenization",
"ๆ ผๅผๆ ๅๅ",
"้ฟๅบฆ่ฃๅช/ๅกซๅ
"
],
"4. ๆฐๆฎๅขๅผบ": [
"ๅ่ฏๅขๅผบ",
"ๅไน่ฏๆฟๆข",
"ๆจกๅๆนๅ"
],
"5. ่ดจ้่ฏไผฐ": [
"ๅฐๆๅบฆ่ฏไผฐ",
"ไบบๅทฅๆฝๆ ทๆฃๆฅ",
"ๅคๆ ทๆงๅๆ"
]
}
5.2 ่ฏไผฐไธๆต่ฏ
5.2.1 ๅธธ็จ่ฏไผฐๅบๅ
| MMLU |
ๅคไปปๅก็ฅ่ฏ |
57ไธชๅญฆ็ง็้ๆฉ้ข |
| HellaSwag |
ๅธธ่ฏๆจ็ |
ๅฅๅญ่กฅๅ
จ |
| GSM8K |
ๆฐๅญฆๆจ็ |
ๅฐๅญฆๆฐๅญฆๅบ็จ้ข |
| HumanEval |
ไปฃ็ ็ๆ |
Python ๅฝๆฐ่กฅๅ
จ |
| TruthfulQA |
็ๅฎๆง |
ๆฃๆตๅนป่ง |
| MT-Bench |
ๅฏน่ฏ่ฝๅ |
ๅค่ฝฎๅฏน่ฏ่ฏๅ |
| C-Eval |
ไธญๆ็ฅ่ฏ |
ไธญๆๅคไปปๅก |
| CMMLU |
ไธญๆ MMLU |
ไธญๆ็ MMLU |
5.2.2 ่ฏไผฐไปฃ็ ็คบไพ
# ไฝฟ็จ lm-evaluation-harness ่ฏไผฐ
# pip install lm-eval
from lm_eval import evaluator
from lm_eval.models.huggingface import HFLM
# ๅ ่ฝฝๆจกๅ
model = HFLM(
pretrained="meta-llama/Llama-2-7b-hf",
device="cuda"
)
# ่ฟ่ก่ฏไผฐ
results = evaluator.simple_evaluate(
model=model,
tasks=["hellaswag", "mmlu", "gsm8k"],
num_fewshot=5,
batch_size=8
)
print(results["results"])
5.3 ๅธธ่ง้ฎ้ขไธ่งฃๅณๆนๆก
| ่ฎญ็ปไธๆถๆ |
ๅญฆไน ็ไธๅฝใๆฐๆฎ้ฎ้ข |
่ฐๆด LRใๆฃๆฅๆฐๆฎ |
| ่ฟๆๅ |
ๆฐๆฎ้ไธ่ถณใๆจกๅ่ฟๅคง |
ๆฐๆฎๅขๅผบใๆญฃๅๅ |
| ็พ้พๆง้ๅฟ |
ๅพฎ่ฐ็ ดๅๅๆ่ฝๅ |
LoRAใ่พๅฐๅญฆไน ็ |
| ๅนป่ง |
่ฎญ็ปๆฐๆฎๆๅชๅฃฐ |
RAG ๅขๅผบใRLHF |
| ๆจ็ๆ
ข |
ๆจกๅๅคงใ็กฌไปถๅผฑ |
้ๅใ่ธ้ฆใๅ็บง็กฌไปถ |
| ๆพๅญไธ่ถณ |
ๆจกๅ/batch ๅคชๅคง |
ๆขฏๅบฆ็ดฏ็งฏใ้ๅใLoRA |
5.4 ่ฎญ็ป่ตๆบไผฐ็ฎ
# ๆพๅญไผฐ็ฎๅ
ฌๅผ๏ผ่ฟไผผ๏ผ
def estimate_memory(params_billion, precision="fp16", training=True):
"""
params_billion: ๅๆฐ้๏ผๅไบฟ๏ผ
precision: fp32/fp16/int8/int4
training: ๆฏๅฆ่ฎญ็ป
"""
bytes_per_param = {
"fp32": 4,
"fp16": 2,
"bf16": 2,
"int8": 1,
"int4": 0.5
}
# ๆจกๅๆ้
model_memory = params_billion * bytes_per_param[precision]
if training:
# ่ฎญ็ปๆถ้่ฆ้ขๅค็ไผๅๅจ็ถๆๅๆขฏๅบฆ
# AdamW: ๅๆฐ + ๆขฏๅบฆ + ไธ้ถๅจ้ + ไบ้ถๅจ้ โ 4x
# ๅ ไธๆฟๆดปๅผ็ญ๏ผๆป่ฎก็บฆ 6-8x
total_memory = model_memory * 6
else:
# ๆจ็ๆถไธป่ฆๆฏๆจกๅๆ้ + KV Cache
total_memory = model_memory * 1.2
return f"{total_memory:.1f} GB"
# ็คบไพ
print(estimate_memory(7, "fp16", training=True)) # ็บฆ 84 GB
print(estimate_memory(7, "fp16", training=False)) # ็บฆ 16.8 GB
print(estimate_memory(7, "int4", training=False)) # ็บฆ 4.2 GB
5.5 ่ฎญ็ปๅทฅๅ
ท็ๆ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ่ฎญ็ปๅทฅๅ
ท็ๆ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ๐ง ่ฎญ็ปๆกๆถ โ
โ โโโ Hugging Face Transformers โ
โ โโโ DeepSpeed โ
โ โโโ Megatron-LM โ
โ โโโ ColossalAI โ
โ โโโ LLaMA-Factory โ
โ โ
โ ๐ ๅฎ้ช็ฎก็ โ
โ โโโ Weights & Biases โ
โ โโโ MLflow โ
โ โโโ TensorBoard โ
โ โ
โ ๐๏ธ ๆฐๆฎๅค็ โ
โ โโโ Datasets (HuggingFace) โ
โ โโโ Apache Spark โ
โ โโโ Dask โ
โ โ
โ โ๏ธ ไบๅนณๅฐ โ
โ โโโ AWS SageMaker โ
โ โโโ Google Vertex AI โ
โ โโโ Azure ML โ
โ โโโ AutoDL / ๆๆบไบ๏ผๅฝๅ
๏ผ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
6. ๆป็ป
6.1 ๆ ธๅฟ่ฆ็น
| ๆถๆไธ่ฎญ็ป |
Transformer ๆถๆใ้ข่ฎญ็ปไธ้ถๆฎตใๅๅธๅผ่ฎญ็ป |
| ๅฏน้ฝไธไผๅ |
RLHF/DPO ๅฏน้ฝใๆ็คบๅทฅ็จๆๅทง |
| ๅพฎ่ฐๆๆฏ |
LoRA/QLoRA ๅๆฐ้ซๆๅพฎ่ฐใๆฐๆฎๆ ผๅผ |
| ๆจ็้จ็ฝฒ |
้ๅๅ็ผฉใvLLM/Ollama ้จ็ฝฒใๆถๆ่ฎพ่ฎก |
6.2 ๅญฆไน ่ทฏๅพ
ๅบ็ก โ ๅฎ่ทต โ ๆทฑๅ
ฅ
1๏ธโฃ ๅบ็ก็่ฎบ
โข Transformer ๆถๆๅ็
โข ๆณจๆๅๆบๅถ
โข ้ข่ฎญ็ป็ฎๆ
2๏ธโฃ ๅจๆๅฎ่ทต
โข ไฝฟ็จ HuggingFace ๅพฎ่ฐๆจกๅ
โข ๅฐ่ฏ LoRA/QLoRA
โข ๆฌๅฐ้จ็ฝฒ Ollama
3๏ธโฃ ๆทฑๅ
ฅไผๅ
โข ๅๅธๅผ่ฎญ็ป
โข ๆจ็ไผๅ
โข ็ไบง้จ็ฝฒ
6.3 ๅ่่ตๆบ