يتكامل Hugging Face TRL الآن رسميًا مع RapidFire AI لتسريع تجارب الضبط الدقيق وما بعد التدريب. يمكن لمستخدمي TRL الآن اكتشاف RapidFire AI وتثبيته وتشغيله باعتباره أسرع طريقة لمقارنة تكوينات الضبط الدقيق/ما بعد التدريب المتعددة لتخصيص LLMs دون تغييرات كبيرة في التعليمات البرمجية ودون تضخم متطلبات GPU.

لماذا هذا مهم

عند الضبط الدقيق لبرامج LLM أو ما بعد التدريب، غالبًا لا يكون لدى الفرق الوقت و/أو الميزانية لمقارنة التكوينات المتعددة على الرغم من أن ذلك يمكن أن يعزز مقاييس التقييم بشكل كبير. يتيح لك RapidFire AI تشغيل تكوينات TRL متعددة بشكل متزامن – حتى على وحدة معالجة رسومات واحدة – ومقارنتها في الوقت الفعلي تقريبًا من خلال جدولة وتنفيذ جدولة وتنفيذ جديدة قابلة للتكيف. في المعايير الداخلية المشار إليها في صفحة TRL، يوفر هذا إنتاجية أعلى للتجربة تصل إلى 16–24× مقارنةً بمقارنة التكوينات بشكل تسلسلي واحدة تلو الأخرى، مما يتيح لك الوصول إلى مقاييس أفضل بكثير بشكل أسرع بكثير.


ينشئ RapidFire AI اتصالاً مباشرًا ثلاثي الاتجاهات بين IDE الخاص بك ولوحة معلومات المقاييس والواجهة الخلفية للتنفيذ متعدد وحدات معالجة الرسومات

ما تحصل عليه، من خارج منطقة الجزاء

  • أغلفة TRL المنسدلة – يستخدم RFSFTConfig, RFDPOConfig، و RFGRPOConfig كبدائل قريبة من الصفر لتكوينات SFT/DPO/GRPO الخاصة بـ TRL.

  • التدريب المتزامن على أساس القطعة — يقوم RapidFire AI بتقسيم مجموعة البيانات إلى عدد محدد من القطع وتكوينات الدورات عند حدود القطع لتمكين مقارنات سابقة بين التفاح والتفاح وكذلك زيادة استخدام وحدة معالجة الرسومات إلى أقصى حد.

  • عمليات التحكم التفاعلية (IC Ops) — من لوحة المعلومات نفسها، يمكنك الإيقاف والاستئناف والحذف والتعديل والاستنساخ، ربما باستخدام Warm-Start، وأي تشغيل أثناء الطيران لتجنب إهدار الموارد على التكوينات ذات الأداء الضعيف والمضاعفة على التكوينات ذات الأداء الأفضل – لا توجد إعادة تشغيل للمهام، ولا تلاعب بوحدات معالجة الرسومات أو المجموعات المنفصلة، ​​ولا يوجد تضخم في الموارد.

عمليات التحكم التفاعلية
استنساخ التكوينات الواعدة باستخدام المعلمات الفائقة المعدلة، بدءًا من الأوزان الأصلية بشكل اختياري، وكل ذلك من لوحة المعلومات المباشرة

  • تنسيق متعدد GPU – يقوم برنامج جدولة RapidFire AI تلقائيًا بوضع التكوينات وتنظيمها عبر وحدات معالجة الرسومات المتاحة على مجموعات من البيانات عبر آليات الذاكرة المشتركة الفعالة. أنت تركز على نماذجك ومقاييس التقييم، وليس على السباكة.

  • لوحة القيادة القائمة على MLflow — المقاييس والسجلات وعمليات IC Ops في الوقت الفعلي في مكان واحد بمجرد بدء تجربتك. سيتم دعم المزيد من لوحات المعلومات مثل Trackio وW&B وTensorBoard قريبًا.

كيف يعمل

يقوم RapidFire AI بتقسيم مجموعة البيانات الخاصة بك بشكل عشوائي إلى “أجزاء” ويقوم بتدوير تكوينات LLM من خلال وحدات معالجة الرسومات عند حدود القطع. يمكنك الحصول على إشارة متزايدة على مقاييس التقييم عبر جميع التكوينات بسرعة أكبر بكثير. تعمل عملية التحقق التلقائي عبر محول فعال قائم على الذاكرة المشتركة/آلية إراقة/تحميل النموذج على إبقاء التدريب سلسًا ومستقرًا ومتسقًا. استخدم IC Ops للتكيف في منتصف الرحلة لإيقاف الأداء المنخفض مبكرًا واستنساخ الأداء الواعد باستخدام مقابض التكوين المعدلة، بدءًا من أوزان الوالدين بشكل اختياري.

مقارنة جدولة GPU
التسلسل مقابل المهام الموازية مقابل RapidFire AI: تعمل أداة الجدولة التكيفية على زيادة استخدام وحدة معالجة الرسومات إلى الحد الأقصى عبر التكوينات المتعددة ووحدات معالجة الرسومات. يعرض الصف السفلي عمليات IC Ops أثناء العمل، مثل إيقاف التشغيل واستنساخه وتعديله في منتصف الرحلة.

ابدء

قم بتثبيت RapidFire AI وابدأ التشغيل في أقل من دقيقة:

pip install rapidfireai


huggingface-cli login --token YOUR_TOKEN


pip uninstall -y hf-xet


rapidfireai init
rapidfireai start

يتم إطلاق لوحة القيادة في http://localhost:3000 حيث يمكنك مراقبة جميع تجاربك والتحكم فيها.

المدربين TRL المدعومة

  • SFT مع RFSFTConfig
  • DPO مع RFDPOConfig
  • جي آر بي أو مع RFGRPOConfig

تم تصميمها كبدائل سهلة الاستخدام حتى تتمكن من الحفاظ على نموذج TRL العقلي الخاص بك مع الحصول على المزيد من التزامن والتحكم في تطبيقات الضبط الدقيق/ما بعد التدريب.

الحد الأدنى من مثال TRL SFT

إليك ما يبدو عليه التدريب تكوينات متعددة في وقت واحد حتى على وحدة معالجة الرسومات واحدة:

from rapidfireai import Experiment
from rapidfireai.automl import List, RFGridSearch, RFModelConfig, RFLoraConfig, RFSFTConfig
from datasets import load_dataset
from transformers import AutoModelForCausalLM, AutoTokenizer


dataset = load_dataset("bitext/Bitext-customer-support-llm-chatbot-training-dataset")
train_dataset = dataset["train"].select(range(128)).shuffle(seed=42)

def formatting_function(row):
    return {
        "prompt": [
            {"role": "system", "content": "You are a helpful customer support assistant."},
            {"role": "user", "content": row["instruction"]},
        ],
        "completion": [{"role": "assistant", "content": row["response"]}]
    }

dataset = dataset.map(formatting_function)


config_set = List([
    RFModelConfig(
        model_name="TinyLlama/TinyLlama-1.1B-Chat-v1.0",
        peft_config=RFLoraConfig(r=8, lora_alpha=16, target_modules=["q_proj", "v_proj"]),
        training_args=RFSFTConfig(learning_rate=1e-3, max_steps=128, fp16=True),
    ),
    RFModelConfig(
        model_name="TinyLlama/TinyLlama-1.1B-Chat-v1.0",
        peft_config=RFLoraConfig(r=32, lora_alpha=64, target_modules=["q_proj", "v_proj"]),
        training_args=RFSFTConfig(learning_rate=1e-4, max_steps=128, fp16=True),
        formatting_func=formatting_function,
    )
])


experiment = Experiment(experiment_name="sft-comparison")
config_group = RFGridSearch(configs=config_set, trainer_type="SFT")

def create_model(model_config):
    model = AutoModelForCausalLM.from_pretrained(
        model_config["model_name"], 
        device_map="auto", torch_dtype="auto"
    )
    tokenizer = AutoTokenizer.from_pretrained(model_config["model_name"])
    return (model, tokenizer)

experiment.run_fit(config_group, create_model, train_dataset, num_chunks=4, seed=42)
experiment.end()

ماذا يحدث عند تشغيل هذا؟

لنفترض أنك قمت بتشغيل ما سبق على جهاز 2-GPU. بدلاً من التدريب بشكل تسلسلي (التكوين 1 → الانتظار → التكوين 2 → الانتظار)، يتم تدريب كلا التكوينين بشكل متزامن:

يقترب الوقت حتى القرار المقارن استخدام GPU
متسلسل (تقليدي) ~15 دقيقة استغلال 60%
RapidFire AI (متزامن) ~5 دقائق استخدام بنسبة 95%+

يمكنك التوصل إلى قرار مقارن 3× عاجلا على نفس الموارد بعد انتهاء كلا التكوينين من معالجة مجموعة البيانات الأولى بدلاً من انتظارهم لرؤية مجموعة البيانات بأكملها واحدة تلو الأخرى. يفتح http://localhost:3000 لمشاهدة المقاييس المباشرة واستخدام IC Ops لإيقاف التشغيل أو استنساخه أو تعديله في الوقت الفعلي بناءً على ما تراه.

المعايير: تسريع العالم الحقيقي

إليك ما تراه الفرق في الوقت المناسب للوصول إلى أفضل خسارة تدريب شاملة قابلة للمقارنة (عبر جميع التكوينات التي تمت تجربتها) عند التبديل من المقارنات التسلسلية إلى التجارب المتوازية الفائقة التي تدعم RapidFire AI:

سيناريو الوقت المتسلسل وقت RapidFire AI تسريع
4 تكوينات، 1 وحدة معالجة الرسومات 120 دقيقة 7.5 دقيقة 16×
8 تكوينات، 1 وحدة معالجة الرسومات 240 دقيقة 12 دقيقة 20×
4 تكوينات، 2 وحدة معالجة رسومات 60 دقيقة 4 دقائق 15×

معايير أداء NVIDIA A100 بسعة 40 جيجابايت مع طرازي TinyLlama-1.1B وLlama-3.2-1B

ابدأ اليوم

🚀 جربه عمليًا: Interactive Colab Notebook — إعداد صفري، يعمل في متصفحك

📚التوثيق الكامل: oss-docs.rapidfire.ai – الأدلة الكاملة والأمثلة ومرجع واجهة برمجة التطبيقات

💻 جيثب: RapidFireAI/rapidfireai — مفتوح المصدر وجاهز للإنتاج

📦 التثبيت عبر PyPI: pypi.org/project/rapidfireai – pip install rapidfireai

💬 انضم إلى المجتمع: Discord – احصل على المساعدة ومشاركة النتائج وطلب الميزات


تم تصميم RapidFire AI لأن الوضع الراهن الشائع المتمثل في تجربة تكوين واحد في كل مرة يؤدي إلى إهدار الوقت ودورات وحدة معالجة الرسومات. من خلال هذا التكامل الرسمي، يمكن لكل مستخدم TRL الضبط/التدريب اللاحق بشكل أكثر ذكاءً، والتكرار بشكل أسرع، وشحن نماذج أفضل.

جرب التكامل وأخبرنا: ما مدى سرعة حلقة التجربة الخاصة بك؟ ماذا يجب أن نبني بعد ذلك؟ لقد بدأنا للتو، وستشكل تعليقاتك إلى أين ننتقل من هنا.

شاركها.
اترك تعليقاً