ساختن مدل هوش مصنوعی خود با ابزارهای منبع باز: یک راهنمای فنی گام به گام

چرا مدل هوش مصنوعی خود را بسازید؟
در حالی که API هایی مانند GPT-4 یا جمینی قدرتمند هستند ، اما محدودیت هایی دارند: هزینه ، تأخیر و عدم وجود سفارشی سازی. مدل های منبع باز مانند لاما 3با غلط، یا برخاستن به شما اجازه می دهد تا شما دارای پشته ، معماری های ترفند و بهینه سازی برای کارهای طاقچه باشید-خواه این تجزیه و تحلیل متن پزشکی باشد یا تشخیص شیء هواپیماهای بدون سرنشین در زمان واقعی.
در این راهنما ، ما یک مدل تجزیه و تحلیل احساسات سفارشی با استفاده از بغل کردن ترانسفورماتورهای صورت وت پیتورچ، با کد گام به گام. بیایید شیرجه بزنیم!
مرحله 1: مدل پایه خود را انتخاب کنید
مدل های منبع باز به عنوان نقطه شروع از طریق عمل می کنند انتقال یادگیریبشر به عنوان مثال:
- برخاستن برای کارهای NLP (طبقه بندی متن ، NER).
- برگ برای دید رایانه
- زمزمه کردن برای گفتار به متن.
نمونه: بیایید استفاده کنیم دبستان– یک نوع سبک تر BERT – برای کار تجزیه و تحلیل احساسات ما.
from transformers import AutoTokenizer, AutoModelForSequenceClassification
model_name = "distilbert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2) # 2 classes: positive/negative
مرحله 2: مجموعه داده خود را آماده کنید
از مجموعه داده های باز (به عنوان مثال ، در آغوش گرفتن مجموعه داده های صورت ، Kaggle) استفاده کنید و یا خود را تهیه کنید. برای این نسخه ی نمایشی ، ما بارگیری خواهیم کرد بررسی IMDB مجموعه داده ها:
from datasets import load_dataset
dataset = load_dataset("imdb")
train_dataset = dataset["train"].shuffle().select(range(1000)) # Smaller subset for testing
test_dataset = dataset["test"].shuffle().select(range(200))
داده ها را از پیش پردازش کنید: متن و قالب را برای Pytorch نشان دهید.
def tokenize(batch):
return tokenizer(batch["text"], padding=True, truncation=True, max_length=512)
train_dataset = train_dataset.map(tokenize, batched=True, batch_size=8)
test_dataset = test_dataset.map(tokenize, batched=True, batch_size=8)
مرحله 3: مدل را تنظیم کنید
اهرم بغل کردن صورت Trainer
کلاس برای رسیدگی به حلقه های آموزشی:
from transformers import TrainingArguments, Trainer
import numpy as np
from sklearn.metrics import accuracy_score
# Define training arguments
training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=8,
evaluation_strategy="epoch",
logging_dir="./logs",
)
# Define metrics
def compute_metrics(pred):
labels = pred.label_ids
preds = np.argmax(pred.predictions, axis=1)
return {"accuracy": accuracy_score(labels, preds)}
# Initialize Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=test_dataset,
compute_metrics=compute_metrics,
)
# Start training!
trainer.train()
مرحله 4: ارزیابی و بهینه سازی کنید
پس از آموزش ، در مجموعه آزمون ارزیابی کنید:
results = trainer.evaluate()
print(f"Test accuracy: {results['eval_accuracy']:.2f}")
اگر عملکرد فاقد:
- داده های بیشتری اضافه کنید.
- تنظیم HyperParameter (میزان یادگیری ، اندازه دسته ای) را امتحان کنید.
- به یک مدل بزرگتر بروید (به عنوان مثال ،
bert-large-uncased
).
مرحله 5: مدل خود را مستقر کنید
مدل خود را به onnx برای بهره وری تولید:
from transformers import convert_graph_to_onnx
convert_graph_to_onnx.convert_pytorch(model, tokenizer, output_path="model.onnx")
استقرار از طریق فریپی:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class TextRequest(BaseModel):
text: str
@app.post("/predict")
def predict(request: TextRequest):
inputs = tokenizer(request.text, return_tensors="pt", truncation=True)
outputs = model(**inputs)
pred = "positive" if outputs.logits.argmax().item() == 1 else "negative"
return {"sentiment": pred}
چالش ها و بهترین شیوه ها
- بیش از حد: از لایه های ترک تحصیل ، تقویت داده ها یا توقف زودرس استفاده کنید.
-
محدودیت های محاسبه: از کمیت استفاده کنید (به عنوان مثال ،
bitsandbytes
برای آموزش 4 بیتی) یا مدل های کوچکتر. - کیفیت داده ها: برچسب های پر سر و صدا و توزیع کلاس تعادل.
💡 برای نوک: با یک مرکز مدل مانند بغل کردن صورت و به صورت دقیق و دقیق شروع کنید.
پایان
ساخت مدل های AI سفارشی با ابزارهای منبع باز در دسترس و مقرون به صرفه است. با تنظیم دقیق مدل های از قبل آموزش دیده ، می توانید بدون مجموعه داده های گسترده یا بودجه به نتایج پیشرفته ای برسید.
سوالی دارید؟ موارد استفاده خود را در زیر به اشتراک بگذارید ، و بیایید بحث کنیم!
🔗 منابع: