1950–1980
:符號主義與邏輯式AI1990–2010
:機器學習(SVM、決策樹)、深度學習興起(CNN、RNN)2017
:Transformer 發表(Attention is All You Need),引發 NLP 與 LLM 大幅進展2020
:大規模語言模型(GPT 系列等)、多模態模型、泛化能力與生成模型成為焦點大型語言模型(LLM)與自監督預訓練
:由大規模無標註資料預訓練,然後微調或採用提示多模態融合
:將語言、視覺、音訊融合,出現如視覺-文本檢索、影像生成、視覺問答等等應用高效微調技術(LoRA / PEFT / Adapters)
:減少微調成本並加速迭代模型壓縮與量化
:讓大型模型可在邊緣或有限資源上推論聯邦學習與隱私保護
:在資料敏感場景保護使用者隱私自動化機器學習(AutoML)與工具鏈成熟(MLOps)
:模型從訓練到部署自動化、版本控制與監控生成式AI社會影響與治理
:假訊息、版權與倫理問題成為關切# requirements: transformers, datasets, accelerate, torch
from transformers import AutoTokenizer, AutoModelForCausalLM, Trainer, TrainingArguments
from datasets import load_dataset
model_name = 'gpt2' # 教學用,實務可換成更適合中文或自行訓練模型
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
dataset = load_dataset('wikitext', 'wikitext-2-raw-v1', split='train')
def preprocess(example):
return tokenizer(example['text'], truncation=True, max_length=512)
tokenized = dataset.map(preprocess, batched=True, remove_columns=['text'])
training_args = TrainingArguments(
output_dir='./outputs',
per_device_train_batch_size=2,
num_train_epochs=1,
fp16=True,
logging_steps=10,
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized,
)
trainer.train()
# requirements: peft, transformers, accelerate
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import get_peft_model, LoraConfig
model_name = 'gpt2'
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
lora_config = LoraConfig(
r=8,
lora_alpha=32,
target_modules=['q_proj','v_proj'],
lora_dropout=0.1
)
model = get_peft_model(model, lora_config)
# 照常訓練 model,只有 LoRA 參數會被更新
# requirements: transformers, torch, datasets
from transformers import CLIPProcessor, CLIPModel
from PIL import Image
model = CLIPModel.from_pretrained('openai/clip-vit-base-patch32')
processor = CLIPProcessor.from_pretrained('openai/clip-vit-base-patch32')
image = Image.open('example.jpg')
inputs = processor(text=['a photo of a cat','a photo of a dog'], images=image, return_tensors='pt', padding=True)
outputs = model(**inputs)
logits_per_image = outputs.logits_per_image
probs = logits_per_image.softmax(dim=1)
print(probs)
使用
transformers
+onnxruntime
或torch.quantization
進行推論加速
# 簡單示例:使用 torch.quantization 進行靜態量化(示意)
import torch
from torchvision import models
model = models.resnet18(pretrained=True)
model.eval()
model.qconfig = torch.quantization.get_default_qconfig('fbgemm')
model_fused = torch.quantization.fuse_modules(model, [['conv1','bn1','relu']])
model_prepared = torch.quantization.prepare(model_fused)
# calibration with representative dataset ...
model_quantized = torch.quantization.convert(model_prepared)
# requirements: fastapi, uvicorn, transformers, torch
from fastapi import FastAPI
from pydantic import BaseModel
from transformers import pipeline
class RequestBody(BaseModel):
prompt: str
app = FastAPI()
pipe = pipeline('text-generation', model='gpt2')
@app.post('/generate')
def generate(req: RequestBody):
out = pipe(req.prompt, max_length=100)
return {'generated': out}
# run: uvicorn app:app --host 0.0.0.0 --port 8000
版本控制
:使用 DVC 或 MLflow 管理資料與模型版本持續整合 / 持續部署(CI/CD)
:自動測試模型變更、驗證效能、部署監控
:延遲、吞吐量、資料漂移(data drift)、概念漂移(concept drift)安全與驗證
:輸入驗證、沙盒化、速率限制、審計日誌偏見與公平性(Bias)檢測
隱私保護
:敏感資料清理、差分隱私技術生成內容的版權與誤導風險
合規
:依照地區法律(例如:個資法)做資料治理