Skip to content

Commit 0f33bcd

Browse files
Quentin GallouédecQuentin Gallouédec
Quentin Gallouédec
authored and
Quentin Gallouédec
committed
Simplify and update trl examples
1 parent 9487765 commit 0f33bcd

File tree

7 files changed

+115
-347
lines changed

7 files changed

+115
-347
lines changed

docs/source/ar/trainer.md

Lines changed: 43 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -306,75 +306,45 @@ pip install galore-torch
306306
ثم أضف ببساطة أحد `["galore_adamw"، "galore_adafactor"، "galore_adamw_8bit"]` في `optim` جنبًا إلى جنب مع `optim_target_modules`، والتي يمكن أن تكون قائمة من السلاسل أو التعبيرات النمطية regex أو المسار الكامل المطابق لأسماء الوحدات المستهدفة التي تريد تكييفها. فيما يلي مثال على النص البرمجي كامل(تأكد من `pip install trl datasets`):
307307

308308
```python
309-
import torch
310309
import datasets
311-
import trl
312-
313-
from transformers import TrainingArguments, AutoConfig, AutoTokenizer, AutoModelForCausalLM
310+
from trl import SFTConfig, SFTTrainer
314311

315312
train_dataset = datasets.load_dataset('imdb', split='train')
316-
317-
args = TrainingArguments(
318-
output_dir="./test-galore"،
313+
args = SFTConfig(
314+
output_dir="./test-galore",
319315
max_steps=100,
320-
per_device_train_batch_size=2,
321-
optim="galore_adamw"،
322-
optim_target_modules=[r".*.attn.*"، r".*.mlp.*"]
316+
optim="galore_adamw",
317+
optim_target_modules=[r".*.attn.*", r".*.mlp.*"],
318+
gradient_checkpointing=True,
323319
)
324-
325-
model_id = "google/gemma-2b"
326-
327-
config = AutoConfig.from_pretrained(model_id)
328-
329-
tokenizer = AutoTokenizer.from_pretrained(model_id)
330-
model = AutoModelForCausalLM.from_config(config).to(0)
331-
332-
trainer = trl.SFTTrainer(
333-
model=model,
320+
trainer = SFTTrainer(
321+
model="google/gemma-2b",
334322
args=args,
335323
train_dataset=train_dataset,
336-
dataset_text_field='text',
337-
max_seq_length=512,
338324
)
339-
340325
trainer.train()
341326
```
342327

343328
لتمرير معامﻻت إضافية يدعمها GaLore، يجب عليك تمرير `optim_args` بشكل صحيح، على سبيل المثال:
344329

345330
```python
346-
import torch
347331
import datasets
348-
import trl
349-
350-
from transformers import TrainingArguments, AutoConfig, AutoTokenizer, AutoModelForCausalLM
332+
from trl import SFTConfig, SFTTrainer
351333

352334
train_dataset = datasets.load_dataset('imdb', split='train')
353-
354-
args = TrainingArguments(
335+
args = SFTConfig(
355336
output_dir="./test-galore",
356337
max_steps=100,
357-
per_device_train_batch_size=2,
358338
optim="galore_adamw",
359339
optim_target_modules=[r".*.attn.*", r".*.mlp.*"],
360340
optim_args="rank=64, update_proj_gap=100, scale=0.10",
341+
gradient_checkpointing=True,
361342
)
362-
363-
model_id = "google/gemma-2b"
364-
365-
config = AutoConfig.from_pretrained(model_id)
366-
367-
tokenizer = AutoTokenizer.from_pretrained(model_id)
368-
model = AutoModelForCausalLM.from_config(config).to(0)
369-
370-
trainer = trl.SFTTrainer(
371-
model=model,
343+
trainer = SFTTrainer(
344+
model="google/gemma-2b",
372345
args=args,
373346
train_dataset=train_dataset,
374-
dataset_text_field='text',
375-
max_seq_length=512,
376347
)
377-
378348
trainer.train()
379349
```
380350
يمكنك قراءة المزيد حول الطريقة في [المستودع الأصلي](https://github.com/jiaweizzhao/GaLore) أو [الورقة البحثية](https://arxiv.org/abs/2403.03507).
@@ -386,37 +356,23 @@ trainer.train()
386356
يمكنك أيضًا إجراء تحسين طبقة تلو الأخرى عن طريق إضافة `layerwise` إلى اسم المُحسِّن كما هو موضح أدناه:
387357

388358
```python
389-
import torch
390359
import datasets
391-
import trl
392-
393-
from transformers import TrainingArguments، AutoConfig، AutoTokenizer، AutoModelForCausalLM
360+
from trl import SFTConfig, SFTTrainer
394361

395-
train_dataset = datasets.load_dataset('imdb'، split='train')
396-
397-
args = TrainingArguments(
398-
output_dir="./test-galore"،
399-
max_steps=100،
400-
per_device_train_batch_size=2،
401-
optim="galore_adamw_layerwise"،
402-
optim_target_modules=[r".*.attn.*"، r".*.mlp.*"]
362+
train_dataset = datasets.load_dataset('imdb', split='train')
363+
args = SFTConfig(
364+
output_dir="./test-galore",
365+
max_steps=100,
366+
optim="galore_adamw_layerwise",
367+
optim_target_modules=[r".*.attn.*", r".*.mlp.*"],
368+
optim_args="rank=64, update_proj_gap=100, scale=0.10",
369+
gradient_checkpointing=True,
403370
)
404-
405-
model_id = "google/gemma-2b"
406-
407-
config = AutoConfig.from_pretrained(model_id)
408-
409-
tokenizer = AutoTokenizer.from_pretrained(model_id)
410-
model = AutoModelForCausalLM.from_config(config).to(0)
411-
412-
trainer = trl.SFTTrainer(
413-
model=model،
414-
args=args،
415-
train_dataset=train_dataset،
416-
dataset_text_field='text'،
417-
max_seq_length=512،
371+
trainer = SFTTrainer(
372+
model="google/gemma-2b",
373+
args=args,
374+
train_dataset=train_dataset,
418375
)
419-
420376
trainer.train()
421377
```
422378

@@ -436,39 +392,21 @@ trainer.train()
436392
فيما يلي نص برمجي بسيط يوضح كيفية ضبط نموذج [google/gemma-2b](https://huggingface.co/google/gemma-2b) على مجموعة بيانات IMDB في الدقة الكاملة:
437393

438394
```python
439-
import torch
440395
import datasets
441-
from transformers import TrainingArguments، AutoTokenizer، AutoModelForCausalLM
442-
import trl
396+
from trl import SFTConfig, SFTTrainer
443397

444-
train_dataset = datasets.load_dataset('imdb'، split='train')
445-
446-
args = TrainingArguments(
447-
output_dir="./test-lomo"،
448-
max_steps=100،
449-
per_device_train_batch_size=4،
450-
optim="adalomo"،
451-
gradient_checkpointing=True،
452-
logging_strategy="steps"،
453-
logging_steps=1،
454-
learning_rate=2e-6،
455-
save_strategy="no"،
456-
run_name="lomo-imdb"،
398+
train_dataset = datasets.load_dataset('imdb', split='train')
399+
args = SFTConfig(
400+
output_dir="./test-lomo",
401+
max_steps=100,
402+
optim="adalomo",
403+
gradient_checkpointing=True,
457404
)
458-
459-
model_id = "google/gemma-2b"
460-
461-
tokenizer = AutoTokenizer.from_pretrained(model_id)
462-
model = AutoModelForCausalLM.from_pretrained(model_id، low_cpu_mem_usage=True).to(0)
463-
464-
trainer = trl.SFTTrainer(
465-
model=model،
466-
args=args،
467-
train_dataset=train_dataset،
468-
dataset_text_field='text'،
469-
max_seq_length=1024،
405+
trainer = SFTTrainer(
406+
model="google/gemma-2b",
407+
args=args,
408+
train_dataset=train_dataset,
470409
)
471-
472410
trainer.train()
473411
```
474412

@@ -524,39 +462,21 @@ trainer.train()
524462

525463
فيما يلي نص برمجى بسيط لشرح كيفية ضبط [google/gemma-2b](https://huggingface.co/google/gemma-2b) بدقة على مجموعة بيانات IMDB بدقة كاملة:
526464
```python
527-
import torch
528465
import datasets
529-
from transformers import TrainingArguments, AutoTokenizer, AutoModelForCausalLM
530-
import trl
466+
from trl import SFTConfig, SFTTrainer
531467

532468
train_dataset = datasets.load_dataset('imdb', split='train')
533-
534-
args = TrainingArguments(
535-
output_dir="./test-schedulefree",
536-
max_steps=1000,
537-
per_device_train_batch_size=4,
469+
args = SFTConfig(
470+
output_dir="./test-galore",
471+
max_steps=100,
538472
optim="schedule_free_adamw",
539473
gradient_checkpointing=True,
540-
logging_strategy="steps",
541-
logging_steps=1,
542-
learning_rate=2e-6,
543-
save_strategy="no",
544-
run_name="sfo-imdb",
545474
)
546-
547-
model_id = "google/gemma-2b"
548-
549-
tokenizer = AutoTokenizer.from_pretrained(model_id)
550-
model = AutoModelForCausalLM.from_pretrained(model_id, low_cpu_mem_usage=True).to(0)
551-
552-
trainer = trl.SFTTrainer(
553-
model=model,
475+
trainer = SFTTrainer(
476+
model="google/gemma-2b",
554477
args=args,
555478
train_dataset=train_dataset,
556-
dataset_text_field='text',
557-
max_seq_length=1024,
558479
)
559-
560480
trainer.train()
561481
```
562482
## تسريع ومدرب

docs/source/en/model_doc/mamba.md

Lines changed: 15 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -97,39 +97,22 @@ print(tokenizer.decode(output[0], skip_special_tokens=True))
9797
- Mamba stacks `mixer` layers which are equivalent to `Attention` layers. You can find the main logic of Mamba in the `MambaMixer` class.
9898
- The example below demonstrates how to fine-tune Mamba with [PEFT](https://huggingface.co/docs/peft).
9999

100-
```py
101-
from datasets import load_dataset
102-
from trl import SFTTrainer
103-
from peft import LoraConfig
104-
from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments
105-
106-
model_id = "state-spaces/mamba-130m-hf"
107-
tokenizer = AutoTokenizer.from_pretrained(model_id)
108-
model = AutoModelForCausalLM.from_pretrained(model_id)
109-
dataset = load_dataset("Abirate/english_quotes", split="train")
110-
training_args = TrainingArguments(
111-
output_dir="./results",
112-
num_train_epochs=3,
113-
per_device_train_batch_size=4,
114-
logging_dir='./logs',
115-
logging_steps=10,
116-
learning_rate=2e-3
117-
)
118-
lora_config = LoraConfig(
119-
r=8,
120-
target_modules=["x_proj", "embeddings", "in_proj", "out_proj"],
121-
task_type="CAUSAL_LM",
122-
bias="none"
123-
)
124-
trainer = SFTTrainer(
125-
model=model,
126-
processing_class=tokenizer,
100+
```py
101+
from datasets import load_dataset
102+
from trl import SFTConfig, SFTTrainer
103+
from peft import LoraConfig
104+
105+
model_id = "state-spaces/mamba-130m-hf"
106+
dataset = load_dataset("Abirate/english_quotes", split="train")
107+
training_args = SFTConfig(dataset_text_field="quote")
108+
lora_config = LoraConfig(target_modules=["x_proj", "embeddings", "in_proj", "out_proj"])
109+
trainer = SFTTrainer(
110+
model=model_id,
127111
args=training_args,
128-
peft_config=lora_config,
129-
train_dataset=dataset,
130-
dataset_text_field="quote",
131-
)
132-
trainer.train()
112+
train_dataset=dataset,
113+
peft_config=lora_config,
114+
)
115+
trainer.train()
133116
```
134117

135118
## MambaConfig

docs/source/en/model_doc/mamba2.md

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -103,40 +103,19 @@ print(tokenizer.decode(output[0], skip_special_tokens=True))
103103
- The example below demonstrates how to fine-tune Mamba 2 with [PEFT](https://huggingface.co/docs/peft).
104104

105105
```python
106-
from trl import SFTTrainer
106+
from datasets import load_dataset
107107
from peft import LoraConfig
108-
from transformers import AutoTokenizer, Mamba2ForCausalLM, TrainingArguments
109-
model_id = 'mistralai/Mamba-Codestral-7B-v0.1'
110-
tokenizer = AutoTokenizer.from_pretrained(model_id, revision='refs/pr/9', from_slow=True, legacy=False)
111-
tokenizer.pad_token = tokenizer.eos_token
112-
tokenizer.padding_side = "left" #enforce padding side left
108+
from trl import SFTConfig, SFTTrainer
113109

114-
model = Mamba2ForCausalLM.from_pretrained(model_id, revision='refs/pr/9')
110+
model_id = 'mistralai/Mamba-Codestral-7B-v0.1'
115111
dataset = load_dataset("Abirate/english_quotes", split="train")
116-
# Without CUDA kernels, batch size of 2 occupies one 80GB device
117-
# but precision can be reduced.
118-
# Experiments and trials welcome!
119-
training_args = TrainingArguments(
120-
output_dir="./results",
121-
num_train_epochs=3,
122-
per_device_train_batch_size=2,
123-
logging_dir='./logs',
124-
logging_steps=10,
125-
learning_rate=2e-3
126-
)
127-
lora_config = LoraConfig(
128-
r=8,
129-
target_modules=["embeddings", "in_proj", "out_proj"],
130-
task_type="CAUSAL_LM",
131-
bias="none"
132-
)
112+
training_args = SFTConfig(dataset_text_field="quote", gradient_checkpointing=True, per_device_train_batch_size=4)
113+
lora_config = LoraConfig(target_modules=["x_proj", "embeddings", "in_proj", "out_proj"])
133114
trainer = SFTTrainer(
134-
model=model,
135-
tokenizer=tokenizer,
115+
model=model_id,
136116
args=training_args,
137-
peft_config=lora_config,
138117
train_dataset=dataset,
139-
dataset_text_field="quote",
118+
peft_config=lora_config,
140119
)
141120
trainer.train()
142121
```

0 commit comments

Comments
 (0)