تويتر (المعروف أيضًا باسم X)
تابعونا على X | |
تثبيت | unsloth/README.md |
قياس الأداء | جداول الأداء |
النماذج الصادرة | الإصدارات Unsloth |
مدونة | اقرأ مدوناتنا |
جميع النوى مكتوبة بلغة Triton الخاصة بـ OpenAI. محرك خلفي يدوي .
خسارة في الدقة بنسبة 0% - لا توجد طرق تقريبية - كل شيء دقيق.
لا يوجد تغيير في الأجهزة. يدعم وحدات معالجة الرسومات NVIDIA منذ 2018+. الحد الأدنى من قدرة CUDA 7.0 (V100، T4، Titan V، RTX 20، 30، 40x، A100، H100، L40 إلخ) تحقق من وحدة معالجة الرسومات الخاصة بك! بطاقة GTX 1070, 1080 تعمل ولكنها بطيئة.
يعمل على نظامي التشغيل Linux و Windows عبر WSL.
يدعم ضبط QLoRA / LoRA 4 بت و16 بت عبر البتات والبايت.
المصدر المفتوح يتدرب بشكل أسرع 5 مرات - راجع Unsloth Pro للحصول على تدريب أسرع بما يصل إلى 30 مرة !
إذا قمت بتدريب عارضة أزياء باستخدام Unsloth، فيمكنك استخدام هذا الملصق الرائع!
للحصول على القائمة الكاملة لجداول القياس القابلة للتكرار ، انتقل إلى موقعنا على الإنترنت
1A100 40 جيجا | ?تعانق الوجه | انتباه فلاش | ?فتح المصدر المفتوح | ?أونسلوث برو |
---|---|---|---|---|
الألبكة | 1x | 1.04x | 1.98x | 15.64x |
لايون رقاقة2 | 1x | 0.92x | 1.61x | 20.73x |
OASST | 1x | 1.19x | 2.17x | 14.83x |
سليم أوركا | 1x | 1.18x | 2.22x | 14.82x |
تم إجراء جدول المقارنة أدناه بواسطة Hugging Face.
كولاب T4 مجاني | مجموعة البيانات | ?تعانق الوجه | بيتورتش 2.1.1 | ?الكسلان | ؟ تخفيض VRAM |
---|---|---|---|---|---|
اللاما-2 7ب | OASST | 1x | 1.19x | 1.95x | -43.3% |
ميسترال 7 ب | الألبكة | 1x | 1.07x | 1.56x | -13.7% |
اللاما الصغيرة 1.1 ب | الألبكة | 1x | 2.06x | 3.87x | -73.8% |
DPO مع زفير | الترا شات | 1x | 1.09x | 1.55x | -18.6% |
للإصدارات المستقرة، استخدم pip install unsloth
. نوصي pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
لمعظم عمليات التثبيت بالرغم من ذلك.
️Only use Conda if you have it. If not, use Pip
. حدد إما pytorch-cuda=11.8,12.1
لـ CUDA 11.8 أو CUDA 12.1. نحن ندعم python=3.10,3.11,3.12
.
كوندا إنشاء --name unsloth_env بيثون=3.11 pytorch-cuda=12.1 pytorch cudatoolkit xformers -c pytorch -c nvidia -c xformers -y كوندا تفعيل unsloth_env تثبيت النقطة "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"تثبيت النقطة - no-deps trl peft تسريع وحدات البت ساندبايت
mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3 rm -rf ~/miniconda3/miniconda.sh~/miniconda3/bin/conda init bash~/miniconda3/bin/conda init zsh
️Do **NOT** use this if you have Conda.
النقطة أكثر تعقيدًا بعض الشيء نظرًا لوجود مشكلات التبعية. يختلف الأمر pip بالنسبة لإصدارات torch 2.2,2.3,2.4,2.5
وCUDA.
بالنسبة لإصدارات الشعلة الأخرى، فإننا ندعم torch211
و torch212
و torch220
و torch230
و torch240
وبالنسبة لإصدارات CUDA، فإننا ندعم cu118
و cu121
و cu124
. بالنسبة لأجهزة Ampere (A100 وH100 وRTX3090) وما فوق، استخدم cu118-ampere
أو cu121-ampere
أو cu124-ampere
.
على سبيل المثال، إذا كان لديك torch 2.4
و CUDA 12.1
، فاستخدم:
تثبيت النقطة - ترقية النقطة تثبيت النقطة "unsloth[cu121-torch240] @ git+https://github.com/unslothai/unsloth.git"
مثال آخر، إذا كان لديك torch 2.5
و CUDA 12.4
، فاستخدم:
تثبيت النقطة - ترقية النقطة تثبيت النقطة "unsloth[cu124-torch250] @ git+https://github.com/unslothai/unsloth.git"
وأمثلة أخرى:
تثبيت النقطة "unsloth[cu121-ampere-torch240] @ git+https://github.com/unslothai/unsloth.git"تثبيت النقطة "unsloth[cu118-ampere-torch240] @ git+https://github.com/ unslothai/unsloth.git"تثبيت النقطة "unsloth[cu121-torch240] @ git+https://github.com/unslothai/unsloth.git"تثبيت النقطة "unsloth[cu118-torch240] @ git+https://github.com/unslothai/unsloth.git" تثبيت النقطة "unsloth[cu121-torch230] @ git+https://github.com/unslothai/unsloth.git"pip install "unsloth[cu121-ampere-torch230] @ git+https://github.com/unslothai/unsloth.git"pip install "unsloth[cu121" -الشعلة250] @ git+https://github.com/unslothai/unsloth.git"pip install "unsloth[cu124-ampere-torch250] @ git+https://github.com/unslothai/unsloth.git"
أو قم بتشغيل ما يلي في المحطة الطرفية للحصول على أمر تثبيت النقطة الأمثل :
wget -qO- https://raw.githubusercontent.com/unslothai/unsloth/main/unsloth/_auto_install.py | بايثون -
أو قم بتشغيل ما يلي يدويًا في Python REPL:
حاول: استيراد torchexcept: رفع ImportError('تثبيت الشعلة عبر `pip install torch`')من package.version استيراد الإصدار كـ Vv = V(torch.__version__)cuda = str(torch.version.cuda)is_ampere = torch.cuda. get_device_capability()[0] >= 8if cuda != "12.1" و cuda != "11.8" و cuda != "12.4": رفع RuntimeError(f"CUDA = {cuda} غير مدعوم!")if v <= V('2.1.0'): رفع RuntimeError(f"Torch = {v} قديم جدًا!") elif v <= V('2.1.1'): x = 'cu{}{}-torch211'elif v <= V('2.1.2'): x = 'cu{}{}-torch212'elif v < V('2.3.0'): x = 'cu{}{}-torch220'elif v < V('2.4.0'): x = 'cu{} {}-torch230'elif v < V('2.5.0'): x = 'cu{}{}-torch240'elif v < V('2.6.0'): x = 'cu{}{}-torch250'else: رفع RuntimeError(f"Torch = {v} جديد جدًا!")x = x.format(cuda.replace("."، "")، "-ampere" if is_ampere آخر "")print(f'pip install --upgrade pip && pip install "unsloth[{x}] @ git+https://github.com/unslothai/unsloth.git"')
لتشغيل Unsloth مباشرةً على نظام التشغيل Windows:
قم بتثبيت Triton من شوكة Windows هذه واتبع التعليمات: https://github.com/woct0rdho/triton-windows
في SFTTrainer، قم بتعيين dataset_num_proc=1
لتجنب حدوث مشكلة تعطل:
المدرب = SFTTrainer(dataset_num_proc=1, ... )
للحصول على تعليمات التثبيت المتقدمة أو إذا رأيت أخطاء غريبة أثناء التثبيت:
تثبيت torch
triton
. انتقل إلى https://pytorch.org لتثبيته. على سبيل المثال pip install torch torchvision torchaudio triton
تأكد من تثبيت CUDA بشكل صحيح. جرب nvcc
. إذا فشل ذلك، فستحتاج إلى تثبيت برامج تشغيل cudatoolkit
أو CUDA.
قم بتثبيت xformers
يدويا يمكنك محاولة تثبيت vllm
ومعرفة ما إذا كان vllm
ناجحًا. تحقق مما إذا كان xformers
قد نجح مع python -m xformers.info
انتقل إلى https://github.com/facebookresearch/xformers. هناك خيار آخر وهو تثبيت flash-attn
لوحدات معالجة الرسومات Ampere.
أخيرًا، قم بتثبيت bitsandbytes
وتحقق من ذلك باستخدام python -m bitsandbytes
انتقل إلى وثائقنا الرسمية للحفظ في GGUF، ونقاط التفتيش، والتقييم، والمزيد!
نحن ندعم TRL أو Trainer أو Seq2SeqTrainer أو حتى رمز Pytorch الخاص بـ Huggingface!
نحن في المستندات الرسمية لـ Hugging Face! تحقق من مستندات SFT ومستندات DPO!
من unsloth import FastLanguageModel من unsloth import is_bfloat16_supportedimport torchfrom trl import SFTTrainerfrom المحولات import TrainingArgumentsfrom datasets import Load_datasetmax_seq_length = 2048 # يدعم تحجيم RoPE داخليًا، لذا اختر أيًا منها!# Get LAION dataseturl = "https://huggingface.co/datasets/laion/OIG/resolve/main/unified_chip2.jsonl"dataset =load_dataset("json"، data_files = {"train" : url}، Split = "train")# 4 بت مسبقًا النماذج الكمية التي ندعمها للتنزيل بشكل أسرع 4x + لا يوجد OOMs.fourbit_models = ["unsloth/mistral-7b-v0.3-bnb-4bit"، # New Mistral v3 2x أسرع!"unsloth/mistral-7b-instruct-v0.3-bnb-4bit"،"unsloth/llama-3-8b" -bnb-4bit"، # Llama-3 15 تريليون رمز نموذج 2x أسرع!"unsloth/llama-3-8b-Instruct-bnb-4bit"، "unsloth/llama-3-70b-bnb-4bit"، "unsloth/Phi-3-mini-4k-instruct"، # Phi-3 2x أسرع!"unsloth/Phi-3-medium-4k-instruct"،"unsloth/mistral-7b-bnb-4bit"، "unsloth/gemma-7b-bnb-4bit"، # جيما أسرع 2.2x!] # المزيد من النماذج على https://huggingface.co/unslothmodel، الرمز المميز = FastLanguageModel.from_pretrained(model_name = "unsloth/llama-3-8b-bnb-4bit"،max_seq_length = max_seq_length،dtype = لا شيء،load_in_4bit = صحيح، )# قم بتصحيح النموذج وإضافة أوزان LoRA السريعةmodel = FastLanguageModel.get_peft_model(model,r = 16,target_modules = ["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj" ",],lora_alpha = 16,lora_dropout = 0, # يدعم أي شيء، ولكن = 0 هو الأمثل = "none"، # يدعم أي شيء، ولكن = "none" هو الأمثل# [جديد] "unsloth" يستخدم 30% أقل من VRAM، ويناسب أحجام دفعات أكبر بمقدار 2x!use_gradient_checkpointing = "unsloth"، # True أو "unsloth" لحالة contextrandom_state الطويلة جدًا = 3407، max_seq_length = max_seq_length، use_rslora = False، # نحن ندعم LoRAloftq_config = لا شيء، # And LoftQ)trainer = SFTTrainer(model = model,train_dataset = dataset,dataset_text_field = "text",max_seq_length = max_seq_length,tokenizer = tokenizer,args = TrainingArguments(per_device_train_batch_size = 2,gradient_accumulation_steps = 4,warmup_steps = 10,max_steps = 60,fp16 = not is_bfloat16_supported(),bf16 = is_bfloat16_supported(),logging_steps = 1,output_dir = "outputs"،optim = "adamw_8bit"، البذور = 3407، )، )trainer.train()# انتقل إلى https://github.com/unslothai/unsloth/wiki للحصول على نصائح متقدمة مثل# (1) الحفظ في GGUF / الدمج في 16 بت لـ vLLM# (2) التدريب المستمر من محول LoRA المحفوظ # (3) إضافة حلقة تقييم / OOMs# (4) قوالب دردشة مخصصة
يبدو أن DPO (تحسين التفضيلات المباشرة)، وPPO، وReward Modeling جميعها تعمل وفقًا للاختبار المستقل لجهة خارجية من Llama-Factory. لدينا دفتر ملاحظات Google Colab الأولي لإعادة إنتاج Zephyr على Tesla T4 هنا: دفتر الملاحظات.
نحن في المستندات الرسمية لـ Hugging Face! نحن في مستندات SFT ومستندات DPO!
import osos.environ["CUDA_VISIBLE_DEVICES"] = "0" # مجموعة اختيارية لمعرف جهاز GPU من unsloth import FastLanguageModel, PatchDPOTrainerfrom unsloth import is_bfloat16_supportedPatchDPOTrainer()import torchfrom المحولات import TrainingArgumentsfrom trl import DPOtrainermodel, tokenizer = FastLanguageModel.from_pretrained(model_name = "unsloth/zephyr-sft-bnb-4bit"،max_seq_length = max_seq_length،dtype = لا شيء،load_in_4bit = صحيح، )# قم بتصحيح النموذج وإضافة أوزان LoRA السريعةmodel = FastLanguageModel.get_peft_model(model,r = 64,target_modules = ["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj" ",],lora_alpha = 64,lora_dropout = 0, # يدعم أي شيء، لكن = 0 هو الأمثل = "none"، # يدعم أي شيء، ولكن = "none" هو الأمثل# [جديد] "unsloth" يستخدم 30% أقل من VRAM، ويناسب أحجام دفعات أكبر بمقدار 2x!use_gradient_checkpointing = "unsloth"، # True أو "unsloth" لحالة contextrandom_state الطويلة جدًا = 3407،max_seq_length = max_seq_length، )dpo_trainer = DPOTrainer(model = model,ref_model = لا شيء,args = TrainingArguments(per_device_train_batch_size = 4,gradient_accumulation_steps = 8,warmup_ratio = 0.1,num_train_epochs = 3,fp16 = not is_bfloat16_supported(),bf16 = is_bfloat16_supported(),logging_steps = 1,optim = "adamw_8bit"، البذور = 42,output_dir = "المخرجات"، ),beta = 0.1,train_dataset = YOUR_DATASET_HERE,# eval_dataset = YOUR_DATASET_HERE,tokenizer = tokenizer,max_length = 1024,max_prompt_length = 512, )dpo_trainer.train()
انقر فوق "الرمز" للحصول على أمثلة قابلة للتكرار بالكامل
"Unsloth Equal" عبارة عن معاينة لإصدارنا الاحترافي، مع إزالة الكود. تظل كافة الإعدادات ومنحنى الخسارة متطابقة.
للحصول على القائمة الكاملة لجداول القياس، انتقل إلى موقعنا على الإنترنت
1A100 40 جيجا | ?تعانق الوجه | فلاش الاهتمام 2 | ?فتح الكسل | اونسلوث على قدم المساواة | أونسلوث برو | أونسلوث ماكس |
---|---|---|---|---|---|---|
الألبكة | 1x | 1.04x | 1.98x | 2.48x | 5.32x | 15.64x |
شفرة | شفرة | شفرة | شفرة | شفرة | ||
ثواني | 1040 | 1001 | 525 | 419 | 196 | 67 |
ذاكرة ميغابايت | 18235 | 15365 | 9631 | 8525 | ||
٪ أنقذ | 15.74 | 47.18 | 53.25 |
رابط جدول الأداء TGS: الرموز المميزة لكل وحدة معالجة رسومات في الثانية. الموديل: LLaMA2-7B. وحدة معالجة الرسومات: NVIDIA A100 * 1. حجم الدفعة: 4. تراكم التدرج: 2. تصنيف LoRA: 8. الحد الأقصى للطول: 1024.
طريقة | أجزاء | تي جي اس | غرام | سرعة |
---|---|---|---|---|
التردد العالي | 16 | 2392 | 18 جيجابايت | 100% |
HF + FA2 | 16 | 2954 | 17 جيجابايت | 123% |
أونسلوث + FA2 | 16 | 4007 | 16 جيجابايت | 168% |
التردد العالي | 4 | 2415 | 9 جيجابايت | 101% |
أونسلوث + FA2 | 4 | 3726 | 7 جيجابايت | 160% |
1A100 40 جيجا | تعانق الوجه | فلاش الاهتمام 2 | مفتوح | اونسلوث على قدم المساواة | أونسلوث برو | أونسلوث ماكس |
---|---|---|---|---|---|---|
ميسترال 7B سليم أوركا | 1x | 1.15x | 2.15x | 2.53x | 4.61x | 13.69x |
شفرة | شفرة | شفرة | شفرة | شفرة | ||
ثواني | 1813 | 1571 | 842 | 718 | 393 | 132 |
ذاكرة ميغابايت | 32853 | 19385 | 12465 | 10271 | ||
٪ أنقذ | 40.99 | 62.06 | 68.74 |
1A100 40 جيجا | تعانق الوجه | فلاش الاهتمام 2 | مفتوح | اونسلوث على قدم المساواة | أونسلوث برو | أونسلوث ماكس |
---|---|---|---|---|---|---|
رمز اللاما 34B | أوم | 0.99x | 1.87x | 2.61x | 4.27x | 12.82x |
شفرة | شفرة | شفرة | شفرة | |||
ثواني | 1953 | 1982 | 1043 | 748 | 458 | 152 |
ذاكرة ميغابايت | 40000 | 33217 | 27413 | 22161 | ||
٪ أنقذ | 16.96 | 31.47 | 44.60 |
1 تي4 16 جيجا | تعانق الوجه | انتباه فلاش | مفتوح | Unsloth Pro Equal | أونسلوث برو | أونسلوث ماكس |
---|---|---|---|---|---|---|
الألبكة | 1x | 1.09x | 1.69x | 1.79x | 2.93x | 8.3x |
شفرة | شفرة | شفرة | شفرة | |||
ثواني | 1599 | 1468 | 942 | 894 | 545 | 193 |
ذاكرة ميغابايت | 7199 | 7059 | 6459 | 5443 | ||
٪ أنقذ | 1.94 | 10.28 | 24.39 |
2 تي 4 دي دي بي | تعانق الوجه | انتباه فلاش | مفتوح | اونسلوث على قدم المساواة | أونسلوث برو | أونسلوث ماكس |
---|---|---|---|---|---|---|
الألبكة | 1x | 0.99x | 4.95x | 4.44x | 7.28x | 20.61x |
شفرة | شفرة | شفرة | ||||
ثواني | 9882 | 9946 | 1996 | 2227 | 1357 | 480 |
ذاكرة ميغابايت | 9176 | 9128 | 6904 | 6782 | ||
٪ أنقذ | 0.52 | 24.76 | 26.09 |
سيارة Tesla T4 واحدة على Google Colab bsz = 2, ga = 4, max_grad_norm = 0.3, num_train_epochs = 1, seed = 3047, lr = 2e-4, wd = 0.01, optim = "adamw_8bit", schedule = "linear", schedule_steps = 10
نظام | GPU | الألبكة (52 كيلو) | ليون أو آي جي (210 ألف) | مساعد مفتوح (10 كيلو) | سليم أوركا (518 ألف) |
---|---|---|---|---|---|
معانقة | 1 تي 4 | 23س 15د | 56س 28د | 8س 38د | 391 س 41 م |
مفتوح | 1 تي 4 | 13س 7د (1.8x) | 31 ساعة 47 دقيقة (1.8x) | 4 س 27 د (1.9x) | 240 ساعة 4 م (1.6x) |
أونسلوث برو | 1 تي 4 | 3 ساعات و6 دقائق (7.5x) | 5 س 17 د (10.7x) | ساعة و7 دقائق (7.7x) | 59 ساعة 53 دقيقة (6.5x) |
أونسلوث ماكس | 1 تي 4 | 2س 39د (8.8x) | 4 س 31 د (12.5x) | 0 س 58 د (8.9x) | 51 ساعة 30 دقيقة (7.6x) |
ذروة استخدام الذاكرة
نظام | GPU | الألبكة (52 كيلو) | ليون أو آي جي (210 ألف) | مساعد مفتوح (10 كيلو) | سليم أوركا (518 ألف) |
---|---|---|---|---|---|
معانقة | 1 تي 4 | 7.3 جيجابايت | 5.9 جيجابايت | 14.0 جيجابايت | 13.3 جيجابايت |
مفتوح | 1 تي 4 | 6.8 جيجابايت | 5.7 جيجابايت | 7.8 جيجابايت | 7.7 جيجابايت |
أونسلوث برو | 1 تي 4 | 6.4 جيجابايت | 6.4 جيجابايت | 6.4 جيجابايت | 6.4 جيجابايت |
أونسلوث ماكس | 1 تي 4 | 11.4 جيجابايت | 12.4 جيجابايت | 11.9 جيجابايت | 14.4 جيجابايت |
سيارتان Tesla T4 على Kaggle bsz = 2, ga = 4, max_grad_norm = 0.3, num_train_epochs = 1, seed = 3047, lr = 2e-4, wd = 0.01, optim = "adamw_8bit", schedule = "linear", schedule_steps = 10
نظام | GPU | الألبكة (52 كيلو) | ليون أو آي جي (210 ألف) | مساعد مفتوح (10 كيلو) | سليم أوركا (518 ألف) * |
---|---|---|---|---|---|
معانقة | 2 تي 4 | 84 ساعة 47 دقيقة | 163 س 48 م | 30س 51د | 1301هـ 24م * |
أونسلوث برو | 2 تي 4 | 3 س 20 د (25.4x) | 5 س 43 د (28.7x) | ساعة و12 دقيقة (25.7x) | 71 ساعة 40 دقيقة (18.1x) * |
أونسلوث ماكس | 2 تي 4 | 3 ساعات و4 دقائق (27.6x) | 5 س 14 د (31.3x) | ساعة و6 دقائق (28.1×) | 54 ساعة 20 دقيقة (23.9x) * |
ذروة استخدام الذاكرة على نظام GPU متعدد (2 وحدة معالجة رسومات)
نظام | GPU | الألبكة (52 كيلو) | ليون أو آي جي (210 ألف) | مساعد مفتوح (10 كيلو) | سليم أوركا (518 ألف) * |
---|---|---|---|---|---|
معانقة | 2 تي 4 | 8.4 جيجابايت | 6 جيجابايت | 7.2 جيجابايت | 5.3 جيجابايت | 14.3 جيجا | 6.6 جيجابايت | 10.9 جيجابايت | 5.9 جيجابايت * |
أونسلوث برو | 2 تي 4 | 7.7 جيجابايت | 4.9 جيجابايت | 7.5 جيجا | 4.9 جيجابايت | 8.5 جيجابايت | 4.9 جيجابايت | 6.2 جيجابايت | 4.7 جيجابايت * |
أونسلوث ماكس | 2 تي 4 | 10.5 جيجا | 5 جيجابايت | 10.6 جيجا | 5 جيجابايت | 10.6 جيجا | 5 جيجابايت | 10.5 جيجا | 5 جيجابايت * |
Slim Orca bsz=1
لجميع المعايير منذ bsz=2
OOMs. يمكننا التعامل مع bsz=2
ولكننا نقيسها بـ bsz=1
من أجل الاتساق.
HuyNguyen-hust لصنع زخارف RoPE بشكل أسرع بنسبة 28%
RandomInternetPreson لتأكيد دعم WSL
152334H لدعم DPO التجريبي
atgctg لتسليط الضوء على بناء الجملة