سيساعدك هذا الدليل على تجميع واختبار نسخة معاينة المطور لمنتج RHEL AI.
مرحبًا بك في معاينة مطوري Red Hat Enterprise Linux AI! يهدف هذا الدليل إلى تعريفك بإمكانيات RHEL AI Developer Preview. كما هو الحال مع معاينات المطورين الأخرى، توقع إجراء تغييرات على مسارات العمل هذه، وأتمتة وتبسيط إضافيين، بالإضافة إلى توسيع الإمكانات وإصدارات دعم الأجهزة والبرامج وتحسينات الأداء (والتحسينات الأخرى) قبل GA.
RHEL AI هو منتج مفتوح المصدر يتضمن:
ملحوظة
يستهدف RHEL AI منصات الخوادم ومحطات العمل المزودة بوحدات معالجة الرسومات المنفصلة. بالنسبة لأجهزة الكمبيوتر المحمولة، يرجى استخدام InstructLab المنبع.
فيما يلي قائمة بالخوادم التي تم التحقق من صحتها بواسطة مهندسي Red Hat للعمل مع RHEL AI Developer Preview. نتوقع أن الأنظمة الحديثة المعتمدة لتشغيل RHEL 9، مع وحدات معالجة الرسومات الحديثة لمراكز البيانات مثل تلك المذكورة أدناه، ستعمل مع معاينة المطور هذه.
بائع / مواصفات وحدة معالجة الرسومات | معاينة RHEL AI Dev |
---|---|
ديل (4) نفيديا H100 | نعم |
مثيلات IBM GX3 | نعم |
لينوفو (8) ايه ام دي MI300x | نعم |
مثيلات AWS p4 وp5 (NVIDIA) | مستمر |
إنتل | مستمر |
للحصول على أفضل تجربة باستخدام فترة معاينة مطور RHEL AI، قمنا بتضمين شجرة تصنيف مشذبة داخل حاوية InstructLab. سيسمح هذا بالتحقق من صحة التدريب لإكماله في إطار زمني معقول على خادم واحد.
الصيغة: يمكن لوحدة معالجة رسومات واحدة تدريب حوالي 250 عينة في الدقيقة. إذا كان لديك 8 وحدات معالجة رسوميات و10000 عينة، فتوقع أن يستغرق الأمر ذلك
بنهاية هذا التمرين، سيكون لديك:
bootc
هو نظام تشغيل موضعي للمعاملات يقوم بالتوفير والتحديث باستخدام صور حاوية OCI/Docker. يعد bootc
المكون الأساسي في المهمة الأوسع للحاويات القابلة للتمهيد.
لقد كان نموذج حاوية Docker الأصلي الذي يستخدم "الطبقات" لنمذجة التطبيقات ناجحًا للغاية. يهدف هذا المشروع إلى تطبيق نفس التقنية على الأنظمة المضيفة القابلة للتمهيد - باستخدام حاويات OCI/Docker القياسية كتنسيق نقل وتسليم لتحديثات نظام التشغيل الأساسي.
تتضمن صورة الحاوية نواة Linux (على سبيل المثال /usr/lib/modules
)، والتي تُستخدم للتمهيد. في وقت التشغيل على نظام مستهدف، لا يتم تشغيل مساحة المستخدم الأساسية نفسها في حاوية بشكل افتراضي. على سبيل المثال، بافتراض أن systemd
قيد الاستخدام، يعمل systemd
كـ pid1
كالمعتاد - لا توجد عملية "خارجية".
في المثال التالي، تم تسمية حاوية bootc باسم Node Base Image
:
اعتمادًا على جهاز البناء المضيف وسرعة الاتصال بالإنترنت، قد يستغرق إنشاء صور الحاوية وتحميلها ما يصل إلى ساعتين.
m5.xlarge
باستخدام وحدة تخزين GP3)quay.io
أو سجل صور آخر. تسجيل المضيف (كيفية التسجيل والاشتراك في نظام RHEL في بوابة عملاء Red Hat باستخدام Red Hat Subscription-Manager؟)
sudo subscription-manager register --username < username > --password < password >
تثبيت الحزم المطلوبة
sudo dnf install git make podman buildah lorax -y
استنساخ RHEL AI Developer Preview git repo
git clone https://github.com/RedHatOfficial/rhelai-dev-preview
قم بالمصادقة على سجل Red Hat (مصادقة سجل حاوية Red Hat) باستخدام حساب redhat.com
الخاص بك.
podman login registry.redhat.io --username < username > --password < password >
podman login --get-login registry.redhat.io
Your_login_here
تأكد من أن لديك مفتاح SSH على مضيف البناء. يتم استخدام هذا أثناء إنشاء صورة مجموعة أدوات برنامج التشغيل. (استخدام ssh-keygen
والمشاركة للمصادقة المستندة إلى المفتاح في Linux | تمكين Sysadmin)
يتضمن RHEL AI مجموعة من ملفات Makefiles لتسهيل إنشاء صور الحاوية. اعتمادًا على جهاز البناء المضيف وسرعة الاتصال بالإنترنت، قد يستغرق ذلك ما يصل إلى ساعة.
أنشئ صورة حاوية InstructLab NVIDIA.
make instruct-nvidia
قم ببناء صورة الحاوية vllm
.
make vllm
قم ببناء صورة الحاوية deepspeed
.
make deepspeed
أخيرًا، قم بإنشاء صورة حاوية bootc
RHEL AI NVIDIA. هذه هي حاوية RHEL "القابلة للتمهيد" لوضع الصورة. نقوم بتضمين الصور الثلاث أعلاه في هذه الحاوية.
make nvidia FROM=registry.redhat.io/rhel9/rhel-bootc:9.4 REGISTRY= < your-registry > REGISTRY_ORG= < your-org-name >
تم وضع علامة على الصورة الناتجة ${REGISTRY}/${REGISTRY_ORG}/nvidia-bootc:latest
. لمزيد من المتغيرات والأمثلة، راجع التدريب/الملف التمهيدي.
ادفع الصورة الناتجة إلى السجل الخاص بك. ستشير إلى عنوان URL هذا داخل ملف البداية في الخطوة التالية.
podman push ${REGISTRY} / ${REGISTRY_ORG} /nvidia-bootc:latest
e.g. podman push quay.io/ < your-user-name > /nvidia-bootc.latest
في هذه المرحلة، لديك صورة حاوية قابلة للتمهيد RHEL AI جاهزة للتثبيت على مضيف فعلي أو افتراضي.
Anaconda هو برنامج تثبيت Red Hat Enterprise Linux، وهو مضمن في جميع صور ISO القابلة للتنزيل من RHEL. الطريقة الرئيسية لأتمتة تثبيت RHEL هي عبر البرامج النصية التي تسمى Kickstart. لمزيد من المعلومات حول Anaconda وKickstart، اقرأ هذه المستندات.
تم تقديم أمر البدء الأخير المسمى ostreecontainer
مع RHEL 9.4. نحن نستخدم ostreecontainer
لتوفير حاوية nvidia-bootc
القابلة للتمهيد والتي قمت للتو بدفعها إلى السجل الخاص بك عبر الشبكة.
فيما يلي مثال لملف البداية. انسخه إلى ملف يسمى rhelai-dev-preview-bootc.ks
وقم بتخصيصه ليناسب بيئتك:
# text
## customize this for your target system
# network --bootproto=dhcp --device=link --activate
## Basic partitioning
## customize this for your target system
# clearpart --all --initlabel --disklabel=gpt
# reqpart --add-boot
# part / --grow --fstype xfs
# ostreecontainer --url quay.io//nvidia-bootc:latest
# firewall --disabled
# services --enabled=sshd
## optionally add a user
# user --name=cloud-user --groups=wheel --plaintext --password
# sshkey --username cloud-user "ssh-ed25519 AAAAC3Nza....."
## if desired, inject an SSH key for root
# rootpw --iscrypted locked
# sshkey --username root "ssh-ed25519 AAAAC3Nza..."
# reboot
قم بتنزيل RHEL 9.4 "Boot ISO"، واستخدم الأمر mkksiso
لتضمين البداية في RHEL boot ISO.
mkksiso rhelai-dev-preview-bootc.ks rhel-9.4-x86_64-boot.iso rhelai-dev-preview-bootc-ks.iso
في هذه المرحلة يجب أن يكون لديك:
nvidia-bootc:latest
: صورة حاوية قابلة للتمهيد مع دعم وحدات معالجة الرسومات NVIDIArhelai-dev-preview-bootc.ks
: ملف البدء المخصص لتوفير RHEL من سجل الحاوية الخاص بك إلى النظام المستهدف.rhelai-dev-preview-bootc-ks.iso
: ملف RHEL 9.4 ISO قابل للتمهيد مع بداية التشغيل المضمنة. قم بتشغيل نظامك المستهدف باستخدام ملف rhelai-dev-preview-bootc-ks.iso
. سوف يقوم anaconda بسحب nvidia-bootc:latest image من السجل الخاص بك وتوفير RHEL وفقًا لملف البداية الخاص بك.
البديل : يمكن تقديم ملف البداية عبر HTTP. عند التثبيت عبر سطر أوامر kernel وخادم HTTP خارجي - أضف inst.ks=http(s)://kickstart/url/rhelai-dev-preview-bootc.ks
قبل استخدام بيئة RHEL AI، يجب عليك تنزيل نموذجين، كل منهما مصمم لوظيفة رئيسية في عملية الضبط عالية الدقة. يتم استخدام الجرانيت كنموذج للطلاب وهو مسؤول عن تسهيل التدريب على الوضع الجديد المضبوط. يتم استخدام Mixtral كنموذج للمعلم وهو مسؤول عن مساعدة مرحلة إنشاء عملية LAB، حيث يتم استخدام المهارات والمعرفة بشكل متضافر لإنتاج مجموعة بيانات تدريبية غنية.
Settings
.Access Tokens
. انقر فوق الزر New token
وقم بتوفير اسم. يتطلب الرمز المميز الجديد فقط استخدام أذونات Read
حيث يتم استخدامه فقط لجلب النماذج. في هذه الشاشة، ستتمكن من إنشاء محتوى الرمز المميز وحفظ النص ونسخه للمصادقة. تركز واجهة سطر الأوامر ilab
التي تعد جزءًا من مشروع InstructLab على تشغيل نماذج كمية خفيفة الوزن على أجهزة الحوسبة الشخصية مثل أجهزة الكمبيوتر المحمولة. في المقابل، يتيح RHEL AI استخدام التدريب عالي الدقة باستخدام نماذج كاملة الدقة. من أجل الألفة، يعكس الأمر والمعلمات تلك الموجودة في أمر ilab
الخاص بـ InstructLab؛ ومع ذلك، فإن تنفيذ الدعم مختلف جدًا.
في RHEL AI، الأمر
ilab
عبارة عن غلاف يعمل كواجهة أمامية لبنية الحاوية المجمعة مسبقًا على نظام RHEL AI.
ilab
الخطوة الأولى هي إنشاء دليل عمل جديد لمشروعك. كل شيء سيكون متعلقًا بدليل العمل هذا. وسوف تحتوي على النماذج والسجلات وبيانات التدريب الخاصة بك.
mkdir my-project
cd my-project
يقوم أمر ilab
الأول الذي ستقوم بتشغيله بإعداد البيئة الأساسية، بما في ذلك تنزيل مستودع التصنيف إذا اخترت ذلك. ستكون هناك حاجة لذلك في الخطوات اللاحقة، لذا يوصى بالقيام بذلك.
ilab init
حدد متغير بيئة باستخدام رمز HF الذي قمت بإنشائه في القسم أعلاه ضمن Access Tokens.
export HF_TOKEN= < paste token value here >
بعد ذلك، قم بتنزيل النموذج الأساسي لـ IBM Granite. هام: لا تقم بتنزيل الإصدارات "المختبرية" من النموذج. يكون النموذج الأساسي من الجرانيت أكثر فعالية عند إجراء تدريب عالي الدقة.
ilab download --repository ibm/granite-7b-base
اتبع نفس العملية لتنزيل نموذج Mixtral.
ilab download --repository mistralai/Mixtral-8x7B-Instruct-v0.1
الآن بعد أن قمت بتهيئة مشروعك وتنزيل نماذجك الأولى، لاحظ بنية دليل مشروعك
my-project/
├─ models/
├─ generated/
├─ taxonomy/
├─ training/
├─ training_output/
├─ cache/
مجلد | غاية |
---|---|
نماذج | يحمل جميع نماذج اللغة، بما في ذلك المخرجات المحفوظة لتلك التي تنشئها باستخدام RHEL AI |
ولدت | تم إنشاء مخرجات البيانات من مرحلة التوليد، بناءً على التعديلات التي تم إدخالها على مستودع التصنيف |
التصنيف | بيانات المهارة أو المعرفة التي تستخدمها طريقة LAB لإنشاء بيانات تركيبية للتدريب |
تمرين | تحويل بيانات البذور لتسهيل عملية التدريب |
Training_output | جميع المخرجات العابرة لعملية التدريب، بما في ذلك السجلات وعينات نقاط التفتيش أثناء الرحلة |
مخبأ | ذاكرة تخزين مؤقت داخلية تستخدمها بيانات النموذج |
الخطوة التالية هي المساهمة بمعارف أو مهارات جديدة في مستودع التصنيف. راجع وثائق InstructLab للحصول على مزيد من المعلومات والأمثلة حول كيفية القيام بذلك. لدينا أيضًا مجموعة من التمارين المعملية هنا.
مع إضافة بيانات التصنيف الإضافية، أصبح من الممكن الآن إنشاء بيانات تركيبية جديدة لتدريب نموذج جديد في النهاية. على الرغم من أنه قبل أن يبدأ التوليد، يجب أولاً بدء نموذج المعلم لمساعدة المولد في إنشاء بيانات جديدة. في جلسة طرفية منفصلة، قم بتشغيل الأمر "serve" وانتظر حتى يكتمل بدء تشغيل VLLM. لاحظ أن هذه العملية قد تستغرق عدة دقائق حتى تكتمل
ilab serve
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
الآن بعد أن أصبح VLLM يخدم وضع المعلم، يمكن بدء عملية الإنشاء باستخدام أمر ilab
generator. ستستغرق هذه العملية بعض الوقت حتى تكتمل وستخرج باستمرار العدد الإجمالي للتعليمات التي تم إنشاؤها عند تحديثها. هذا الإعداد الافتراضي هو 5000 تعليمات، ولكن يمكنك ضبط ذلك باستخدام خيار --num-instructions
.
ilab generate
Q> How do cytokines influence the outcome of certain diseases involving tonsils?
A> The outcome of infectious, autoimmune, or malignant diseases affecting tonsils may be influenced by the overall balance of production profiles of pro-inflammatory and anti-inflammatory cytokines. Determining cytokine profiles in tonsil studies is essential for understanding the causes and underlying mechanisms of these disorders.
35%|████████████████████████████████████████▉
بالإضافة إلى البيانات الحالية المطبوعة على الشاشة أثناء الإنشاء، يتم تسجيل الإخراج الكامل في المجلد الذي تم إنشاؤه. قبل التدريب، يوصى بمراجعة هذه المخرجات للتأكد من أنها تلبي التوقعات. إذا لم يكن الأمر مرضيًا، فحاول تعديل أو إنشاء أمثلة جديدة في التصنيف وإعادة التشغيل.
less generated/generated_Mixtral * .json
بمجرد أن تصبح البيانات التي تم إنشاؤها مرضية، يمكن أن تبدأ عملية التدريب. على الرغم من إغلاق مثيل VLLM أولاً في الجلسة الطرفية التي بدأت في الإنشاء.
CTRL+C
INFO: Application shutdown complete.
INFO: Finished server process [1]
قد تتلقى استثناء Python KeyboardInterrupt وتتبع المكدس. يمكن تجاهل هذا بأمان.
مع توقف VLLM وإنشاء البيانات الجديدة، يمكن بدء عملية التدريب باستخدام الأمر ilab train
. بشكل افتراضي، تقوم عملية التدريب بحفظ نقطة فحص النموذج بعد كل 4999 عينة. يمكنك ضبط ذلك باستخدام المعلمة --num-samples
. بالإضافة إلى ذلك، يتم تشغيل التدريب افتراضيًا لمدة 10 فترات، والتي يمكن تعديلها أيضًا باستخدام المعلمة --num-epochs
. بشكل عام، المزيد من العصور هو الأفضل، ولكن بعد نقطة معينة، سيؤدي المزيد من العصور إلى التجهيز الزائد. يُنصح عادةً بالبقاء ضمن 10 فترات أو أقل والنظر في نقاط عينة مختلفة للعثور على أفضل نتيجة.
ilab train --num-epochs 9
RunningAvgSamplesPerSec=149.4829861942806, CurrSamplesPerSec=161.99957513920629, MemAllocated=22.45GB, MaxMemAllocated=29.08GB
throughput: 161.84935045724643 samples/s, lr: 1.3454545454545455e-05, loss: 0.840185821056366 cuda_mem_allocated: 22.45188570022583 GB cuda_malloc_retries: 0 num_loss_counted_tokens: 8061.0 batch_size: 96.0 total loss: 0.8581467866897583
Epoch 1: 100%|█████████████████████████████████████████████████████████| 84/84 [01:09<00:00, 1.20it/s]
total length: 2527 num samples 15 - rank: 6 max len: 187 min len: 149
بمجرد اكتمال عملية التدريب، سيتم تخزين إدخالات النموذج الجديد في دليل النماذج مع طباعة المواقع على الجهاز
Generated model in /root/workspace/models/tuned-0504-0051:
.
./samples_4992
./samples_9984
./samples_14976
./samples_19968
./samples_24960
./samples_29952
./samples_34944
./samples_39936
./samples_44928
./samples_49920
يمكن استخدام نفس الأمر ilab serve
لخدمة النموذج الجديد عن طريق تمرير الخيار –model مع الاسم والعينة
ilab serve --model tuned-0504-0051/samples_49920
بعد بدء VLLM بالنموذج الجديد، يمكن بدء جلسة محادثة عن طريق إنشاء جلسة طرفية جديدة وتمرير نفس معلمة --model
للدردشة (لاحظ أنه إذا لم يتطابق هذا، فستتلقى رسالة خطأ 404). اطرح عليه سؤالاً يتعلق بمساهماتك في التصنيف.
ilab chat --model tuned-0504-0051/samples_49920
╭─────────────────────────────── system ────────────────────────────────╮
│ Welcome to InstructLab Chat w/ │
│ /INSTRUCTLAB/MODELS/TUNED-0504-0051/SAMPLES_49920 (type /h for help) │
╰───────────────────────────────────────────────────────────────────────╯
>>> What are tonsils ?
╭────────── /instructlab/models/tuned-0504-0051/samples_49920 ──────────╮
│ │
│ Tonsils are a type of mucosal lymphatic tissue found in the │
│ aerodigestive tracts of various mammals, including humans. In the │
│ human body, the tonsils play a crucial role in protecting the body │
│ from infections, particularly those caused by bacteria and viruses. │
╰─────────────────────────────────────────────── elapsed 0.469 seconds ─╯
للخروج من الجلسة، اكتب
exit
هذا كل شيء! الغرض من معاينة المطور هو تقديم شيء ما لمستخدمينا للحصول على تعليقات مبكرة. نحن ندرك أنه قد تكون هناك أخطاء. ونحن نقدر وقتك وجهدك إذا كنت قد وصلت إلى هذا الحد. من المحتمل أنك تواجه بعض المشكلات أو تحتاج إلى استكشاف الأخطاء وإصلاحها. نحن نشجعك على تقديم تقارير الأخطاء وطلبات الميزات وطرح الأسئلة علينا. راجع معلومات الاتصال أدناه لمعرفة كيفية القيام بذلك. شكرًا لك!
$ sudo subscription-manager config --rhsm.manage_repos=1
nvidia-smi
للتأكد من أن برامج التشغيل تعمل ويمكنها رؤية وحدات معالجة الرسوماتnvtop
(متوفر في EPEL) لمعرفة ما إذا كان يتم استخدام وحدات معالجة الرسومات (بعض مسارات التعليمات البرمجية تحتوي على احتياطي لوحدة المعالجة المركزية، وهو ما لا نريده هنا)make prune
من الدليل الفرعي للتدريب. سيؤدي هذا إلى تنظيف القطع الأثرية القديمة.--no-cache
إلى عملية الإنشاء make nvidia-bootc CONTAINER_TOOL_EXTRA_ARGS= " --no-cache "
TMPDIR
: make < platform > TMPDIR=/path/to/tmp