40 گام به سوی آینده‌ای هوشمند - مجموعه وبینارهای رایگان در حوزه هوش مصنوعی
Filter by دسته‌ها
chatGTP
آموزش هوش مصنوعی و انواع آن
آموزش‌های پایه‌ای هوش مصنوعی
اصول هوش مصنوعی
پایتون و ابزارهای یادگیری عمیق
کتابخانه‌ های یادگیری عمیق
یادگیری با نظارت
یادگیری بدون نظارت
یادگیری تقویتی
یادگیری عمیق
یادگیری نیمه نظارتی
آموزش‌های پیشرفته هوش مصنوعی
بینایی ماشین
پردازش زبان طبیعی
پردازش گفتار
چالش‌های عملیاتی
داده کاوی و بیگ دیتا
رایانش ابری و HPC
سیستم‌‌های امبدد
علوم شناختی
دیتاست
اخبار
تیتر یک
رسانه‌ها
آموزش پردازش زبان طبیعی
آموزش علوم داده
اینفوگرافیک
پادکست
ویدیو
رویدادها
کاربردهای هوش مصنوعی
کسب‌و‌کار
تحلیل بازارهای هوش مصنوعی
کارآفرینی
هوش مصنوعی در ایران
هوش مصنوعی در جهان
 آموزش پردازش زبان طبیعی با اکوسیستم هاگینگ فیس؛ ایجاد منبع (قسمت سوم فصل چهارم)

آموزش پردازش زبان طبیعی با اکوسیستم هاگینگ فیس؛ ایجاد منبع (قسمت سوم فصل چهارم)

آسان‌ترین روش برای اشتراک‌گذاری مدل از پیش آموزش داده شده این است که از Hugging Face Hub استفاده کنید. ابزارها و امکانات موجود می‌تواند بستر مناسبی برای اشتراک‌گذاری و به‌روزرسانیِ مستقیم مدل‌ها در Hub فراهم کند. جزئیات آن در بخش‌های بعدی مقاله توضیح داده خواهد شد. مشوق‌های لازم در اختیار کاربران قرار می‌گیرد تا مدل‌ها را آموزش دهند. به این ترتیب، همه می‌توانند به این مدل‌ها دسترسی داشته باشند. مدل‌ها حتی اگر با دیتاست‌های ویژه‌ای آموزش داده شوند، نقش موثری در صرفه‌جویی در زمان خواهند داشت. همچنین، امکان محاسبه‌ی منابع و دسترسی به آرتیفکت‌های مفیدِ آموزش داده شده نیز فراهم می‌شود. پس کاربران می‌توانند از کارهای دیگران نیز سود ببرند. سه روش برای ایجاد منبع مدل جدید وجود دارد:

  • push_to_hubAPI
  • transformersCLI
  •  رابط کاربری وب

پس از ایجاد منبع، می‌توانید فایل‌ها را با git و git-lfs در آن بارگذاری کنید. در این مقاله، مراحل مختلفِ ساخت منبع مدل و بارگذاری فایل‌ها در آنها توضیح داده خواهد شد.

استفاده از push_to_hub با huggingface_hub

آسان‌ترین روش برای بارگذاری فایل‌ها در Hub، استفاده از روش push_to_hub است. در ادامه، باید یک توکن احراز هویت بسازید تا huggingface_hub API هویت‌تان را تشخیص دهد. باید در محیطی باشید که transformers در آن نصب شده باشد. باید دستور CLI login را اجرا کنید. توجه داشته باشید که این دستورها باید با کاراکتر !  همراه باشند، اگر با Google Colab کار می‌کنید.

transformers-cli login

اگر huggingface_hub را نصب کرده‌اید، به شیوه قبلی عمل کنید:

huggingface-cli login

نام کاربری و گذرواژه همان مواردی هستند که برای ورود به Hub استفاده کرده‌اید. بسیار عالی! اکنون توکن احراز هویت‌تان در پوشه‌ی cache ذخیره شده است. حال، نوبت به ایجاد چند منبع رسیده است. دسترسی به Model Hub با روش push_to_hub امکان‌پذیر می‌شود. این روش در مدل‌ها، توکن‌کننده‌ها و اشیای پیکربندی موجود است. این روش نقش موثری در ایجاد منبع و انتقال مستقیم مدل و فایل‌های توکن‌کننده به داخل منبع دارد. برخلاف دو روشی که در زیر خواهید دید، نیازی به انجام دستیِ کارها نیست. برای اینکه با نحوه‌ی کارکرد آن آشنا شوید، ابتدا یک مدل و توکن‌کننده راه‌اندازی می‌کنیم:

from transformers import TFAutoModelForMaskedLM, AutoTokenizer

checkpoint = "camembert-base"

model = TFAutoModelForMaskedLM.from_pretrained(checkpoint)
tokenizer = AutoTokenizer.from_pretrained(checkpoint)

می‌توانید هر کاری که دوست دارید با این روش انجام دهید؛ توکن‌ها را به توکن‌کننده اضافه کنید، مدل را آموزش دهید و به طور دقیق تنظیم‌اش کنید. پس از اینکه مدل‌ها، وزن‌ها و توکن‌کننده مطابق خواسته‌هایتان به دست آمدند، می‌توانید به طور مستقیم از روش push_to_hub استفاده کنید که در شیء model موجود است:

model.push_to_hub("dummy-model")

به این ترتیب، منبع جدید dummy-model در پروفایل‌تان ایجاد خواهد شد. فایل‌های مدل‌تان در آن جای می‌گیرد. همین کار را با توکن‌کننده انجام دهید. بنابراین، همه فایل‌ها در این منبع جدید در دسترس قرار خواهند گرفت:

tokenizer.push_to_hub("dummy-model")

اگر در یک سازمان مشغول به کار هستید، آرگومان organization را به منظور بارگذاری در فضای نام آن سازمان ذکر کنید:

tokenizer.push_to_hub("dummy-model", organization="huggingface")

اگر قصد دارید از توکن Hugging Face خاصی استفاده کنید، باید آن را در روش push_to_hub ذکر کنید:

tokenizer.push_to_hub(
    "dummy-model", organization="huggingface", use_auth_token="<TOKEN>"
)

اکنون، سَری به Model Hub بزنید تا مدل تازه بارگذاری‌شده‌تان را پیدا کنید:

https://huggingface.co/user-or-organization/dummy-model

روی تب «فایل‌ها و نسخه‌ها» کلیک کنید. باید فایل‌ها در قالب اسکرین‌شات زیر نمایان باشند:

ایجاد منبع

مدل و توکن‌کننده‌ی مرتبط با چک‌پوینت bert-base-cased را برداشته و با استفاده از روش push_to_hub در فضای نام‌تان در منبع بارگذاری کنید. این نکته را حتماً بررسی کنید که منبع پیش از حذف کردن به درستی در صفحه قرار گرفته باشد. همان‌طور که پیشتر دیده‌اید، روش push_to_hub آرگومان‌های متعددی را می‌پذیرد؛ بنابراین، امکان بارگذاری منبعی خاص یا فضای نام سازمان یا استفاده از توکن API مختلفی نیز وجود دارد.

بسته پایتون huggingface_hub از روش push_to_hub  پشتیبانی می‌کند. این بسته یک API مستقیم برای Hugging Face Hub عرضه می‌کند و در ترنسفورمرز و چند کتابخانه یادگیری ماشین دیگر مثل allenlp قرار دارد. اگرچه عمده‌ تمرکزمان در فصل جاری روی یکپارچه‌سازیِ ? Transformers است، اما به‌کارگیری آن در کد یا کتابخانه خودتان هم کار چندان دشواری نیست. نحوه‌ی بارگذاری فایل‌ها در منبعِ تازه ایجاد شده در بخش آخر توضیح داده شده است.

استفاده از transformers CLI

بسته‌ی transformers  می‌تواند CLI بسیار ساده‌ای برای کارهای پیش پاافتاده‌ای نظیر گردآوری اطلاعات درباره محیط، افزودن معماری مدل جدید به کتابخانه و تبدیل مدل ارائه کند. این بسته دستور ساده‌ای هم برای ایجاد منبع جدید در فضای نام کاربران یا فضای نام سازمان در Hub دارد. CLI امکان ایجاد منبع جدید را برای کاربران فراهم می‌کند، اما فایل‌های متعددی را در آن بارگذاری نمی‌کند. در بخش حاضر، با نحوه‌ی استفاده از git برای بارگذاری فایل‌ها از خط دستور آشنا خواهید شد.

به طور مشابه، استفاده از huggingface_hub API نیازمند این است که توکن APIتان را در cache ذخیره کرده باشید. بنابراین، باید از دستور login در CLI استفاده کنید. این مورد در بخش قبلی نیز ذکر شد. توجه داشته باشید که این دستورها باید با کاراکتر !  همراه باشند، اگر با Google Colab کار می‌کنید.

transformers-cli login

اگر اقدام به نصب huggingface_hub کرده‌اید:

huggingface-cli login

پس از اینکه این کار به پایان رسید، API می‌داند که به کدام فضاهای نام دسترسی دارید. پروفایل و سازمان‌تان بخشی از آن است. برای اینکه فهرست دستورهای موجود را ببینید، می‌توانید transformers-cli -h را اجرا کنید. احتمال دارد با خروجی زیر مواجه شوید:

usage: huggingface-cli <command> [<args>]

positional arguments:
  {login,whoami,logout,repo,lfs-enable-largefiles,lfs-multipart-upload}
                        huggingface-cli command helpers
    login               Log in using the same credentials as on huggingface.co
    whoami              Find out which huggingface.co account you are logged
                        in as.
    logout              Log out
    repo                {create, ls-files} Commands to interact with your
                        huggingface.co repos.
    lfs-enable-largefiles
                        Configure your repository to enable upload of files >
                        ۵GB.
    lfs-multipart-upload
                        Command will get called by git-lfs, do not call it
                        directly.

optional arguments:
  -h, --help            show this help message and exit

به منظور بارگذاری مدل از پیش آموزش داده شده، از دستور repo create برای ساخت منبع استفاده کنید. جرئیات کار را در زیر می‌بینید:

huggingface-cli repo create dummy-model

بنابراین، منبع dummy-model در فضای نام به دست خواهد آمد. اگر مایل بودید، می‌توانید با استفاده از –organization  مشخص کنید که منبع باید به کدام سازمان تعلق داشته باشد.

huggingface-cli repo create dummy-model --organization huggingface
git lfs install

لذا، dummy-model در فضای نام huggingface شکل خواهد گرفت؛ با فرض اینکه به آن سازمان تعلق دارید. در بخش آخر این بخش، خواهید دید که فایل‌ها چگونه در  منبع تازه ایجاد شده بارگذاری می‌شوند.

استفاده از رابط کاربری وب

رابط کاربری وب ابزارهایی برای مدیریت مستقیم منابع در Hub ارائه می‌کند. با استفاده از این رابط کاربری، ساخت منابع، افزودن فایل‌ها (حتی فایل‌های بزرگتر)، بررسی مدل‌ها، ارائه‌ی بصری تفاوت‌ها و بسیاری دیگر از کارها آسان‌تر می‌شود.

در ابتدا، مالک منبع را مشخص کنید. مالک می‌تواند خود شما یا سازمان متبوع باشد. اگر سازمانی را انتخاب کنید، مدل در صفحه‌ی سازمان پوشش داده خواهد شد و تمامی اعضای سازمان این فرصت را خواهند داشت تا در راستای ارتقای آن تلاش کنند. در وهله بعدی، نام مدل‌تان را وارد کنید و این نام منبع نیز خواهد بود. در نهایت، می‌توانید مشخص کنید که آیا مدل عمومی باشد یا خصوصی. مدل‌های خصوصی مستلزم این است که حساب کاربری پولی در هاگینگ فیس داشته باشید. بنابراین، مدل‌هایی خواهید داشت که از دید عموم کاربران پنهان است.

ایجاد منبع

پس از ساخت منبع مدل، با صفحه‌ای نظیر این روبرو می‌شوید:

ایجاد منبع

میزبانی از مدل شما در این محیط رخ خواهد داد. می‌توانید فایل README را به طور مستقیم از رابط کاربری وب اضافه کنید تا عمل تکثیر آغاز شود. فایل README با نام Markdown شناخته می‌شود. بخش سومِ این فصل به ساخت کارت مدل اختصاص دارد. این مراحل نقش بسیار پررنگی در ارزش‌آفرینی برای مدل‌تان دارد.

ایجاد منبع

اگر به تب «فایل‌ها و نسخه‌ها» نگاه کنید، می‌بینید که هنوز فایل‌های زیادی در آنجا نیست. فقط README.md که خودتان ساختید و فایل .gitattributes که فایل‌های بزرگ را زیر نظر دارد، در آن بخش قابل دسترس می‌باشند.

ایجاد منبع در پردازش زبان طبیعی

در گام بعدی، به بررسی نحوه‌ی افزودن برخی فایل‌های جدید خواهیم پرداخت.

بارگذاری فایل‌های مدل

سیستم مدیریتِ فایل‌ها در Hugging Face Hub بر پایه‌ی git  قرار دارد و git-lfs  که خلاصه‌شده‌ی عبارت Git Large File Storage  است، مخصوص فایل‌های بزرگتر می‌باشد. پیش از ادامه‌ی کار، از این مسئله مطمئن شوید که git  و git-lfs  را روی سیستم‌تان نصب کرده‌اید. پس از اینکه این ابزارها را دانلود و نصب کردید، git lfs install  را برای راه‌اندازیِ git-lfs  اجرا کنید:

Updated git hooks.
Git LFS initialized.

در گام بعدی، به بررسی نحوه‌ی افزودن برخی فایل‌های جدید خواهیم پرداخت.

بارگذاری فایل‌های مدل

سیستم مدیریتِ فایل‌ها در Hugging Face Hub بر پایه‌ی git قرار دارد و git-lfs که خلاصه‌شده‌ی عبارت Git Large File Storage  است، مخصوص فایل‌های بزرگتر می‌باشد. پیش از ادامه‌ی کار، از این مسئله مطمئن شوید که git  و git-lfs را روی سیستم‌تان نصب کرده‌اید. پس از اینکه این ابزارها را دانلود و نصب کردید، git lfs install را برای راه‌اندازیِ git-lfs اجرا کنید:

Updated git hooks.
Git LFS initialized.

گام بعدی این است که منبع مدل‌تان را کلون کنید:

git clone ;

نام کاربری من lysandre  است و از نام مدل dummy استفاده کرده‌ام. پس، دستور برای من به شکل زیر خواهد بود:

git clone https://huggingface.co/lysandre/dummy

اکنون، پوشه‌ای به نام dummy  در دایرکتوری دارم. بگذارید نگاهی به محتوا بیندازیم:

cd dummy && ls
README.md

اگر منبع‌تان را با استفاده از push_to_hub یا transformers CLI ساختید، این پوشه باید خالی باشد. اگر از دستورالعمل‌های بخش قبلی برای ساخت منبع با استفاده از رابط کاربری وب پیروی کردید، پوشه باید حاوی یک فایل README.md باشد که در زیر می‌بینید.

افزودن فایلی با حجم معمولی (مثل فایل پیکربندی، فایل واژگان یا هر فایلی که چند مگابایت حجم داشته باشد) به همان شیوه‌ای انجام می‌شود که در سیستم مبتنی بر git  عمل شده است. با این حال، فایل‌های بزرگتر باید از git-lfs عبور کنند تا به huggingface.co برسند.

حال، بگذارید سری به پایتون بزنیم تا مدل و توکن‌کننده‌ای ایجاد کنیم که به منبع DUMMY متعهد باشد.

from transformers import TFAutoModelForMaskedLM, AutoTokenizer

checkpoint = "camembert-base"

model = TFAutoModelForMaskedLM.from_pretrained(checkpoint)
tokenizer = AutoTokenizer.from_pretrained(checkpoint)

# Do whatever with the model, train it, fine-tune it...

model.save_pretrained("<path_to_dummy_folder>")
tokenizer.save_pretrained("<path_to_dummy_folder>")

حال که چند آرتیفکت مدل و توکن‌کننده ذخیره کرده‌ایم، یک نگاه دیگر به پوشه dummy می‌اندازیم:

ls
config.json  README.md  sentencepiece.bpe.model  special_tokens_map.json  tf_model.h5  tokenizer_config.json  tokenizer.json

اگر به حجم فایل نگاه کنید، می‌بینید که فایل t5_model.h5 فقط داده‌پرت است و بیش از ۴۰۰ مگابایت حجم دارد.

هنگام ساخت منبع (Repository) از رابط کاربری وب، فایل *.gitattributes* به طور خودکار نصب می‌شود تا فایل‌های معینی را زیر نظر بگیرد مثل *.bin* و *.h5*. همچنین، `git-lfs` آنها را بررسی و ردیابی خواهد کرد. اینک، می‌توان با روال پیشین به انجام مراحل دیگر پرداخت. می‌توان همه فایل‌ها را با استفاده از دستور git add به محیط Git اضافه کرد:

git add .

پس می‌توان فایل‌ها را نیز در این مرحله بررسی کرد:

git status
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
  modified:   .gitattributes
  	new file:   config.json
	new file:   sentencepiece.bpe.model
	new file:   special_tokens_map.json
	new file:   tf_model.h5
	new file:   tokenizer.json
	new file:   tokenizer_config.json

به طور مشابه، با استفاده از دستور status باید اطمینان حاصل کنید که git-lfs فایل‌های درست را بررسی و ردیابی می‌کند:

git lfs status
On branch main
Objects to be pushed to origin/main:


Objects to be committed:

	config.json (Git: bc20ff2)
	sentencepiece.bpe.model (LFS: 988bc5a)
	special_tokens_map.json (Git: cb23931)
	tf_model.h5 (LFS: 86fce29)
	tokenizer.json (Git: 851ff3e)
	tokenizer_config.json (Git: f0f7783)

Objects not staged for commit:

می‌بینید که همه فایل‌ها دارای Git هستند، به جز t5_model.h5 که از LFS بهره می‌برد.

نوبت به انجام مراحل آخر رسیده است:

git commit -m "First model version"
[main b08aab1] First model version
 ۶ files changed, 36 insertions(+)
 create mode 100644 config.json
 create mode 100644 sentencepiece.bpe.model
 create mode 100644 special_tokens_map.json
 create mode 100644 tf_model.h5
 create mode 100644 tokenizer.json
 create mode 100644 tokenizer_config.json

بسته به سرعت اینترنت و حجم فایل‌ها، این مراحل می‌تواند قدری زمان‌بر باشد:

git push
Uploading LFS objects: 100% (1/1), 433 MB | 1.3 MB/s, done.
Enumerating objects: 11, done.
Counting objects: 100% (11/11), done.
Delta compression using up to 12 threads
Compressing objects: 100% (9/9), done.
Writing objects: 100% (9/9), 288.27 KiB | 6.27 MiB/s, done.
Total 9 (delta 1), reused 0 (delta 0), pack-reused 0
To https://huggingface.co/lysandre/dummy
   ۸۹۱b41d..b08aab1  main -> main

اگر پس از اتمام این مرحله به منبع مدل نگاه کنید، کلیه فایل‌هایِ تازه اضافه شده را می‌بینید:

آموزش پردازش زبان طبیعی

با UI این فرصت را دارید که فایل‌های مدل را بررسی کنید و متوجهِ تفاوت‌های ایجاد شده شوید:

هاگینگ فیس

میانگین امتیاز / ۵. تعداد ارا :

مطالب پیشنهادی مرتبط

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
[wpforms id="48325"]