Local AI

تسلط بر استنتاج تولید متن: استقرار مدل‌های زبانی بزرگ محلی با عملکرد بالا

با تکامل فضای مدل‌های زبانی بزرگ (LLM)، شکاف بین مدل‌های تحقیقاتی پیشرفته و استنتاج آماده برای تولید به طور قابل توجهی کاهش یافته است. برای توسعه‌دهندگان و دانشمندان داده، چالش دیگر تنها دسترسی به مدل‌ها نیست، بلکه ارائه آن‌ها به صورت کارآمد، امن و در مقیاس است. استنتاج تولید متن (TGI)، موتور استنتاج متن‌باز و با عملکرد بالا که توسط Hugging Face توسعه یافته است، وارد میدان می‌شود. این مطلب به بررسی نحوه بهینه‌سازی TGI برای استقرار هوش مصنوعی محلی می‌پردازد و جایگزینی قدرتمند برای wrapperهای API استاندارد یا پیاده‌سازی‌های خام PyTorch ارائه می‌دهد.

چرا TGI را انتخاب کنیم؟

اجرای‌کنندگان مدل استاندارد اغلب در مدیریت تأخیر، میزان عبور داده (throughput) و مدیریت حافظه هنگام پردازش درخواست‌های همزمان دچار مشکل می‌شوند. TGI به طور خاص برای رفع این گلوگاه‌ها مهندسی شده است. این ابزار از چندین فناوری کلیدی بهره می‌برد:

  • توازی تانسوری (Tensor Parallelism): TGI مدل را بین چندین GPU توزیع می‌کند که امکان استنتاج مدل‌های عظیمی که از محدودیت حافظه یک GPU واحد فراتر می‌روند را فراهم می‌سازد.
  • هسته‌های بهینه‌شده (Optimized Kernels): با استفاده از هسته‌های C++ و CUDA، TGI سربار را نسبت به اجرای‌کنندگان مبتنی بر خالص پایتون به حداقل می‌رساند.
  • دسته‌بندی پیوسته (Continuous Batching): برخلاف پردازش دسته‌ای سنتی، TGI دسته‌بندی پیوسته را پیاده‌سازی می‌کند که اجازه می‌دهد درخواست‌های جدید به محض تکمیل دسته فعلی پردازش شوند و این امر میزان عبور داده را به طور قابل توجهی بهبود می‌بخشد.
  • خروجی ساختاریافته (Structured Output): TGI تضمین می‌کند که خروجی قابل تجزیه به فرمت JSON یا سایر فرمت‌های ساختاریافته باشد که برای یکپارچه‌سازی LLMها در منطق برنامه‌ها حیاتی است.

راه‌اندازی محیط با Docker

ساده‌ترین روش برای استقرار TGI از طریق Docker است. این کار ثبات محیط را تضمین کرده و وابستگی‌های پیچیده CUDA و PyTorch را به صورت خودکار مدیریت می‌کند. قبل از اجرای کانتینر، مطمئن شوید که nvidia-container-toolkit نصب شده است تا GPUهای خود را به کانتینر نمایش دهید.

در اینجا دستور برای دریافت آخرین تصویر پایدار و شروع یک سرور محلی آورده شده است. ما از مدل محبوب mistralai/Mistral-7B-Instruct-v0.2 به عنوان مثال استفاده می‌کنیم و توازی تانسوری را برای دو GPU (در صورت وجود) فعال می‌سازیم.

docker run --gpus all \
  -p 8080:80 \
  -v /path/to/huggingface/cache:/data \
  ghcr.io/huggingface/text-generation-inference:latest \
  --model-id mistralai/Mistral-7B-Instruct-v0.2 \
  --tensor-parallelism 2

پرچم‌های کلیدی در این دستور:

  • --gpus all: تمام GPUهای موجود را به کانتینر منتقل می‌کند.
  • -p 8080:80: پورت داخلی 80 کانتینر را به پورت 8080 میزبان شما نگاشت می‌کند.
  • --model-id: مدل را از Hugging Face Hub مشخص می‌کند.
  • --tensor-parallelism: تعداد GPUهایی که مدل بین آن‌ها تقسیم می‌شود را تنظیم می‌کند.

تعامل با API

پس از اجرای سرور، می‌توانید با استفاده از درخواست‌های HTTP استاندارد با آن تعامل داشته باشید. TGI یک API یکپارچه ارائه می‌دهد که از پاسخ‌های استریم (streaming) و غیر استریم پشتیبانی می‌کند. بیایید یک مثال پایتون را با استفاده از کتابخانه requests برای تولید تکمیل متن بررسی کنیم.

import requests
import json

url = "http://localhost:8080/generate"
headers = {"Content-Type": "application/json"}
data = {
    "inputs": "پایتخت فرانسه کجاست؟",
    "parameters": {
        "max_new_tokens": 50,
        "temperature": 0.7,
        "top_p": 0.9
    }
}

response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())

برای برنامه‌های بلادرنگ، ممکن است ترجیح دهید از پاسخ‌های استریم استفاده کنید. TGI این قابلیت را از طریق SSE (رویدادهای ارسالی سرور) پشتیبانی می‌کند که به فرانت‌اند شما اجازه می‌دهد رابط کاربری را کاراکتر به کاراکتر هنگام تولید متن توسط مدل به‌روزرسانی کند و تجربه کاربری روان‌تری ارائه دهد.

بهینه‌سازی و ملاحظات تولید

هنگام انتقال از مرحله توسعه به تولید، بهینه‌سازی‌های زیر را در نظر بگیرید:

  1. گراف‌های CUDA (CUDA Graphs): گراف‌های CUDA را برای کاهش سربار راه‌اندازی هسته‌ها، به ویژه برای اندازه‌های دسته کوچک‌تر، فعال کنید.
  2. Flash Attention: اطمینان حاصل کنید که مدل شما از Flash Attention پشتیبانی می‌کند و از آن استفاده می‌کند تا مکانیسم‌های توجه سریع‌تر و کارآمدتر از نظر حافظه داشته باشید.
  3. کوانتیزه‌سازی (Quantization): TGI از بارگذاری مدل‌ها با دقت 4 بیتی و 8 بیتی پشتیبانی می‌کند. این امر استفاده از حافظه VRAM را به شدت کاهش می‌دهد و به شما امکان می‌دهد مدل‌های بزرگ‌تری را روی سخت‌افزارهای سطح مصرف‌کننده اجرا کنید.

نتیجه‌گیری

استنتاج تولید متن (TGI) جهش قابل توجهی در استقرار LLMهای محلی محسوب می‌شود. با ترکیب هسته‌های با عملکرد بالا و معماری مقیاس‌پذیر، TGI به توسعه‌دهندگان اجازه می‌دهد مدل‌های پیشرفته را با تأخیر کم و میزان عبور داده بالا ارائه دهند. چه در حال ساخت یک چت‌بات، یک پایگاه دانش داخلی یا یک ابزار کمکی کدنویسی باشید، TGI زیرساخت مورد نیاز برای اجرای قابل اعتماد مدل‌های هوش مصنوعی در محیط‌های تولید را فراهم می‌کند.

امروزه با TGI آزمایش کنید تا پتانسیل کامل هوش مصنوعی محلی را آزاد کنید و به جامعه در حال رشد توسعه‌دهندگان بپیوندید که مرزهای آنچه با مدل‌های زبانی متن‌باز ممکن است را جابجا می‌کنند.

Share: