AirLLM: مدل زبانی ۷۰ میلیاردی رو با ۴ گیگ گرافیک اجرا کن
خلاصهٔ کاملتر
AirLLM یه پروژهی متنبازه که سراغ یکی از بزرگترین دردسرهای اجرای مدلهای زبانی رفته: کمبود حافظهی گرافیک. به گفتهی سازنده، این ابزار مصرف حافظهی مرحلهی inference رو جوری بهینه میکنه که یه مدل ۷۰ میلیارد پارامتری بدون کوانتیزهکردن، هرس یا distillation روی یه کارت گرافیک فقط ۴ گیگابایتی اجرا بشه.
ایدهی اصلی سادست: بهجای اینکه کل مدل یهجا تو حافظه لود بشه، AirLLM مدل رو لایهبهلایه از هم جدا میکنه و روی دیسک ذخیره میکنه، بعد موقع اجرا هر لایه رو نوبتی میاره بالا. برای همین لازم نیست کل وزنها همزمان تو گرافیک جا بشن. البته این کار دیسک زیادی میخواد، چون مدل موقع اجرا اول باز و لایهای ذخیره میشه.
استفادش هم مثل یه مدل معمولی ترنسفورمره؛ کافیه بستهی pip رو نصب کنی و با AutoModel مدل رو از HuggingFace یا مسیر محلی بگیری:
from airllm import AutoModel
model = AutoModel.from_pretrained("garage-bAInd/Platypus2-70B-instruct")یه قابلیت دیگهش فشردهسازیه که به گفتهی تیم، با کوانتیزهکردن block-wise میتونه سرعت اجرا رو تا ۳ برابر ببره، اونم با افت دقت تقریباً ناچیز. نکته اینجاست که چون گلوگاه اصلی، لود شدن از دیسکه، فقط وزنها فشرده میشن نه activationها؛ برای همین حفظ دقت راحتتره. کافیه موقع ساخت مدل آرگومان compression رو بدی:
model = AutoModel.from_pretrained("garage-bAInd/Platypus2-70B-instruct",
compression='4bit')AirLLM از کلی مدل پشتیبانی میکنه؛ از Llama 3 و 3.1 گرفته تا ChatGLM، Qwen، Baichuan، Mistral و Mixtral. روی macOS با پردازندههای Apple Silicon هم کار میکنه (با mlx)، و تازگیها اجرای روی CPU و مدلهای non-sharded هم اضافه شده. کلاس AutoModel هم خودش نوع مدل رو تشخیص میده و لازم نیست کلاس مدل رو دستی بدی.
نکات کلیدی:
- AirLLM مدل ۷۰ میلیاردی رو روی گرافیک ۴ گیگی و مدل ۴۰۵ میلیاردی Llama 3.1 رو روی ۸ گیگ اجرا میکنه
- ترفندش بارگذاری لایهبهلایهی مدله، نه کوانتیزهکردن یا هرس
- گزینهی فشردهسازی block-wise تا ۳ برابر سرعت رو بالا میبره با افت دقت ناچیز
- از Llama، Qwen، ChatGLM، Baichuan، Mistral و Mixtral پشتیبانی میکنه
- روی macOS با Apple Silicon و همینطور CPU هم اجرا میشه




