برنامه نویسی

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

چرا مدل هوش مصنوعی خود را بسازید؟

در حالی که 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}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


چالش ها و بهترین شیوه ها

  1. بیش از حد: از لایه های ترک تحصیل ، تقویت داده ها یا توقف زودرس استفاده کنید.
  2. محدودیت های محاسبه: از کمیت استفاده کنید (به عنوان مثال ، bitsandbytes برای آموزش 4 بیتی) یا مدل های کوچکتر.
  3. کیفیت داده ها: برچسب های پر سر و صدا و توزیع کلاس تعادل.

💡 برای نوک: با یک مرکز مدل مانند بغل کردن صورت و به صورت دقیق و دقیق شروع کنید.


پایان

ساخت مدل های AI سفارشی با ابزارهای منبع باز در دسترس و مقرون به صرفه است. با تنظیم دقیق مدل های از قبل آموزش دیده ، می توانید بدون مجموعه داده های گسترده یا بودجه به نتایج پیشرفته ای برسید.

سوالی دارید؟ موارد استفاده خود را در زیر به اشتراک بگذارید ، و بیایید بحث کنیم!

🔗 منابع:

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا