FlagAI: آموزش و استقرار مدلهای مقیاس بزرگ سریعتر و آسانتر
FlagAI یک جعبه ابزار سریع، ساده و قابل انطباق برای آموزش، تنظیم دقیق و استقرار مدلهای در مقیاس بزرگ است. اکنون بر روی مدل ها و وظایف NLP متمرکز شده است، اما به زودی از روش های دیگر پشتیبانی می کند. FlagAI با تعداد زیادی از مدل های از پیش آموزش دیده سازگار است، از جمله مدل های WuDao GLM، BERT، RoBERTa، GPT2، T5 و Huggingface Transformers. APIهایی را برای دانلود سریع و استفاده از این مدلها، تنظیم دقیق آنها در مجموعههای مختلف داده و به اشتراکگذاری آنها با جامعه ارائه میدهد. در این مقاله، به بررسی FlagAI خواهیم پرداخت و نحوه نصب FlagAI را با مثال نشان خواهیم داد.
FlagAI همچنین یک ابزار اختصاصی برای one-time. از این مدلها میتوان برای انجام کارهایی مانند طبقهبندی متن، استخراج اطلاعات، پاسخگویی به سؤال، خلاصهسازی و تولید متن در متن چینی یا انگلیسی استفاده کرد.
پیش نیازها
- نسخه پایتون >= 3.8
- نسخه PyTorch >= 1.8.0
- نصب CUDA و NCCL همچنین برای آموزش/آزمایش مدلها روی GPUها لازم است.
چرا باید از FlagAI استفاده کنم؟
اگر به دنبال یک جعبه ابزار قدرتمند و با کاربرد آسان برای مدلهای زبانی در مقیاس بزرگ هستید، FlagAI یک انتخاب عالی است. در اینجا برخی از ویژگی های کلیدی FlagAI به شرح زیر است:
بارگیری مدلها با استفاده از کلید API
- FlagAI یک کلید API ارائه میکند که به شما امکان میدهد مدلهای از پیش آموزشدیدهشده را به راحتی دانلود کنید و کوک کردن دقیق آنها را در طیف گسترده ای از مجموعه داده های جمع آوری شده از معیارهای SuperGLUE و CLUE برای متن چینی و انگلیسی. شما می توانید با عدم آموزش مدل ها، در زمان و کار بسیار صرفه جویی کنید.
- FlagAI اکنون بیش از 30 مدل اصلی را پشتیبانی میکند، از جمله Language Model Aquila، مدل چند زبانه نمایش متن و تصویر AltCLIP، مدل تولید متن به تصویر AltDiffusion Huggingface، WuDao GLM (با حداکثر 10 میلیارد پارامتر)، EVA-CLIP، BERTALT، OPTALT، و GRT 2، OPTAL، و EVA-CLIP. مدل های ترانسفورماتور.
- این به شما طیف وسیعی از مدلها را میدهد که میتوانید از بین آنها انتخاب کنید، و به شما امکان میدهد مدلی را پیدا کنید که به بهترین وجه با نیازهای شما مطابقت دارد.
قطار موازی با کمتر از 10 خط کد
- FlagAI توسط چهار مورد از برجستهترین کتابخانههای موازی داده/مدل، از جمله PyTorch، Deepspeed، Megatron-LM، و BMTrain پشتیبانی میشود.
- FlagAI یکپارچهسازی آسان را امکانپذیر میکند و به کاربران این امکان را میدهد که فرآیند آموزش/تست خود را با کمتر از 10 خط کد موازی کنند. این می تواند روند آموزش را به شدت تسریع کند.
به راحتی از جعبه ابزار آموزش چند شات استفاده کنید
- FlagAI همچنین یک جعبه ابزار یادگیری سریع برای کارهای چندتایی فراهم می کند.
- اگر شما فقط مقدار کمی داده برای آموزش دارید، مفید است.
به ویژه در کارهای چینی خوب است
- FlagAI به ویژه در تکالیف چینی ماهر است. این به این دلیل است که بر روی مجموعه داده بزرگی از متن چینی آموزش داده شده است.
- FlagAI یک راه حل فوق العاده است اگر روی یک پروژه زبان چینی کار می کنید.
به طور کلی، FlagAI یک ابزار قوی است که می تواند به شما کمک کند تا مدل های هوش مصنوعی را به سرعت و به راحتی طراحی و اجرا کنید. این یک انتخاب عالی برای کاربران جدید و باتجربه است.
چگونه FlagAI را نصب کنیم؟
فرمان زیر برای نصب FlagAI با استفاده از pip،
استفاده میشود
نصب پیپ -U flagai
[اختیاری] برای نصب FlagAI و توسعه محلی، این مراحل را دنبال کنید
کلون git https://github.com/BAAI-Open/FlagAI.git
python setup.py install
[اختیاری] نرم افزار apex NVIDIA را برای آموزش سریعتر نصب کنید
git clone https://github.com/NVIDIA/apex
سی دی آپکس
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
[اختیاری] DEEPSPEED باید برای بهینه سازهای ZeRO نصب شود
git clone https://github.com/microsoft/DeepSpeed
سی دی DeepSpeed
DS_BUILD_CPU_ADAM=1 DS_BUILD_AIO=1 DS_BUILD_UTILS=1 پیپ نصب -e .
ds_report # وضعیت deespeed را بررسی کنید
[اختیاری] نصب BMTrain (>= 0.2.2) برای آموزش BMTrain
git clone https://github.com/OpenBMB/BMTrain
سی دی BMTrain
python setup.py install
[اختیاری] BMInf را برای استنتاج با منابع کم نصب کنید
pip install bminf
[اختیاری] برای Flash Attention، Flash-attention (>=1.0.2) را نصب کنید
pip install flash-attn
چگونه از کلاس AutoLoad استفاده کنیم؟
آنها مدل های مختلفی را ارائه می دهند که برای اجرای وظایف مختلف آموزش دیده اند. میتوانید از AutoLoader برای بارگیری این مدلها و ایجاد پیشبینی استفاده کنید.
کد مثال نحوه استفاده از کلاس AutoLoad جعبه ابزار FlagAI را برای بارگیری سریع مدلها و توکن سازها نشان میدهد.
مدل و توکنایزر
کلاس AutoLoad در جعبه ابزار FlagAI بارگیری سریع مدل ها و توکن سازها را فراهم می کند. از این کلاس می توان برای ساده سازی فرآیند بارگذاری مدل و توکنایزر مورد نظر استفاده کرد. در زیر مثالی از نحوه استفاده از کلاس AutoLoad آمده است:
از flagai.auto_model.auto_loader import AutoLoader
# نام مدل و توکنایزر را مشخص کنید و مدل و توکنایزر را بارگذاری کنید
auto_loader = AutoLoader(
task_name="title-generation",
model_name="BERT-base-en"
)
model = auto_loader.get_model()
tokenizer = auto_loader.get_tokenizer()
این نمونهای از کار title_generation است، اما میتوانید با تغییر task_name، کارهای اضافی را مدلسازی کنید. سپس می توان از مدل و نشانه ساز برای تنظیم دقیق یا آزمایش مدل استفاده کرد.
پیش بینی
کلاس Predictor برای پیشبینی وظایف مختلف، همانطور که در مثال زیر نشان داده شده است، استفاده میشود.
از flagai.model.predictor.predictor import Predictor
پیش بینی کننده = پیش بینی کننده (مدل، نشانه ساز)
داده_تست = [
"چهار دقیقه پس از دریافت کارت قرمز، امرسون رویال یک کرنر به مسیر کین بدون علامت در تیرک دروازه اشاره کرد، که او توپ را برای گل دوازدهم خود در 17 بازی دربی شمال لندن به داخل فرستاد. بدبختی آرتتا دو دقیقه بعد از نیمه دوم زمانی که کین توپ را جلوی دروازه نگه داشت و سون را خسته کرد، باعث شد تا کوره 3 با ضربه ای فراتر از دروازه آن را شکست دهد. یک طلسم یک گل پشت سر محمد صلاح، بهترین گلزن لیگ برتر در فصل 21، و زمانی که در 18 دقیقه باقیمانده از زمین خارج شد، آشفته به نظر میرسید و پیامهای تسلیتبخشی از پیر امیل هوجبرگ دریافت کرد. وقتی ناراحتیهای او کاهش یافت، سون و اسپرز برای به پایان رساندن تنها به دو امتیاز بیشتر از دو بازی آخر نیاز دارند."
]
برای متن در test_data:
چاپ(
predictor.predict_generate_beamsearch(متن،
out_max_length=50،
beam_size=3))
کار seq2seq یک نوع کار پردازش زبان طبیعی است که در آن یک مدل برای ترجمه دنباله ای از کلمات از یک زبان به زبان دیگر آموزش می بیند. تابع predict_generate_beamsearch می تواند برای تولید پرتوی از ترجمه های احتمالی برای یک دنباله ورودی معین استفاده شود.
NER(تشخیص نهاد نامگذاری شده)
- تشخیص نهاد نامگذاری شده (NER) وظیفه شناسایی موجودیتهای نامگذاری شده در یک متن است، مانند افراد، سازمانها و مکانها.
- تولید عنوان فرآیند ایجاد عنوان برای یک قطعه متن معین است.
- پاسخ به سوال: در این فعالیت باید به سوالات مربوط به یک متن خاص پاسخ دهید.
از flagai.auto_model.auto_loader import AutoLoader
از flagai.model.predictor.predictor import Predictor
task_name = "نر"
model_name = "RoBERTa-base-ch"
هدف = ["O"، "B-LOC"، "I-LOC"، "B-ORG"، "I-ORG"، "B-PER"، "I-PER"]
maxlen = 256
auto_loader = AutoLoader(task_name,
model_name=model_name,
load_pretrain_params=درست است،
class_num=len(هدف))
model = auto_loader.get_model()
tokenizer = auto_loader.get_tokenizer()
پیش بینی کننده = پیش بینی کننده (مدل، نشانه ساز)
داده_تست = [
"در 15 ژوئن، تیم بقایای فرهنگی Caocao Gaoling از موسسه بقایای فرهنگی و باستان شناسی استان هنان به طور علنی بیانیه ای صادر کرد و اعتراف کرد: "هرگز گفته نشده است که مهره های کشف شده متعلق به صاحب مقبره است."
"در 8 آوریل، کنفرانس خلاصه و تقدیر از بازی های المپیک زمستانی و پارالمپیک زمستانی پکن به طور باشکوهی در تالار بزرگ مردم برگزار شد. شی جین پینگ دبیر کل در این کنفرانس شرکت کرد و سخنرانی مهمی ایراد کرد. دبیر کل در سخنرانی خود، المپیک زمستانی پکن، المپیک زمستانی را به طور کامل تایید کرد. depth تجربیات ارزشمند در آماده سازی برای بازی های المپیک زمستانی پکن و پارالمپیک زمستانی را خلاصه کرد و روح المپیک زمستانی پکن را عمیقاً توضیح داد. میراث اتریش برای ترویج توسعه با کیفیت بالا و ارائه الزامات روشن."
کمیسیون اروپا در هشتمین وقت محلی اعلام کرد که دولتهای کشورهای عضو اتحادیه اروپا در مجموع حدود 30 میلیارد یورو از داراییهای مربوط به الیگارشهای روسی و سایر پرسنل تحریمشده روسیه را مسدود کردهاند.
"در این وضعیت نقص، داده های معاملات آسیایی Betfair نشان می دهد که بولونیا داغ است. از منظر شرط بندی اروپایی، برای تیم میزبان نیز داغ است. پالرمو دو بازی متوالی را باخته است."
]
برای t در test_data:
entities = predictor.predict_ner(t، target، maxlen=maxlen)
نتیجه = {}
برای e در نهادها:
اگر e[2] در نتیجه نباشد:
نتیجه[e[2]] = [t[e[0]:e[1] + 1]]
دیگر:
result[e[2]].append(t[e[0]:e[1] + 1])
print(f"result is {result}")
مزایای استفاده از FlagAI
- FlagAI طوری طراحی شده است که استفاده از آن ساده و سریع باشد، حتی برای مبتدیان. API ساده و آسان برای استفاده است، و مستندات آن گسترده است.
FlagAI یک پروژه منبع باز است، بنابراین گسترش و سفارشی کردن آن ساده است. ویژگیها، مدلها و مجموعه دادههای جدید را میتوان اضافه کرد. - FlagAI برای مقیاس بندی مجموعه داده ها و مدل های عظیم ساخته شده است. این میتواند مدلها را در طیف گستردهای از پلتفرمهای سختافزاری، از جمله CPU، GPU، و TPU آموزش دهد و به کار ببرد.
نتیجه گیری
به طور خلاصه، FlagAI یک مجموعه ابزار آموزش، تنظیم دقیق و استقرار مدل سریع، ساده و انعطاف پذیر است. ممکن است انواع مختلفی از وظایف پایین دستی مانند seq2seq، NER، تولید عنوان و پاسخگویی به سؤال را انجام دهد. FlagAI یک ابزار مفید برای سرعت بخشیدن به توسعه برنامه های کاربردی هوش مصنوعی در مقیاس بزرگ است. لطفاً نظرات و انتقادات خود را در بخش نظرات زیر به اشتراک بگذارید.