@@ -306,75 +306,45 @@ pip install galore-torch
306
306
ثم أضف ببساطة أحد ` ["galore_adamw"، "galore_adafactor"، "galore_adamw_8bit"] ` في ` optim ` جنبًا إلى جنب مع ` optim_target_modules ` ، والتي يمكن أن تكون قائمة من السلاسل أو التعبيرات النمطية regex أو المسار الكامل المطابق لأسماء الوحدات المستهدفة التي تريد تكييفها. فيما يلي مثال على النص البرمجي كامل(تأكد من ` pip install trl datasets ` ):
307
307
308
308
``` python
309
- import torch
310
309
import datasets
311
- import trl
312
-
313
- from transformers import TrainingArguments, AutoConfig, AutoTokenizer, AutoModelForCausalLM
310
+ from trl import SFTConfig, SFTTrainer
314
311
315
312
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" ,
319
315
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 ,
323
319
)
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" ,
334
322
args = args,
335
323
train_dataset = train_dataset,
336
- dataset_text_field = ' text' ,
337
- max_seq_length = 512 ,
338
324
)
339
-
340
325
trainer.train()
341
326
```
342
327
343
328
لتمرير معامﻻت إضافية يدعمها GaLore، يجب عليك تمرير ` optim_args ` بشكل صحيح، على سبيل المثال:
344
329
345
330
``` python
346
- import torch
347
331
import datasets
348
- import trl
349
-
350
- from transformers import TrainingArguments, AutoConfig, AutoTokenizer, AutoModelForCausalLM
332
+ from trl import SFTConfig, SFTTrainer
351
333
352
334
train_dataset = datasets.load_dataset(' imdb' , split = ' train' )
353
-
354
- args = TrainingArguments(
335
+ args = SFTConfig(
355
336
output_dir = " ./test-galore" ,
356
337
max_steps = 100 ,
357
- per_device_train_batch_size = 2 ,
358
338
optim = " galore_adamw" ,
359
339
optim_target_modules = [r " . * . attn. * " , r " . * . mlp. * " ],
360
340
optim_args = " rank=64, update_proj_gap=100, scale=0.10" ,
341
+ gradient_checkpointing = True ,
361
342
)
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" ,
372
345
args = args,
373
346
train_dataset = train_dataset,
374
- dataset_text_field = ' text' ,
375
- max_seq_length = 512 ,
376
347
)
377
-
378
348
trainer.train()
379
349
```
380
350
يمكنك قراءة المزيد حول الطريقة في [ المستودع الأصلي] ( https://github.com/jiaweizzhao/GaLore ) أو [ الورقة البحثية] ( https://arxiv.org/abs/2403.03507 ) .
@@ -386,37 +356,23 @@ trainer.train()
386
356
يمكنك أيضًا إجراء تحسين طبقة تلو الأخرى عن طريق إضافة ` layerwise ` إلى اسم المُحسِّن كما هو موضح أدناه:
387
357
388
358
``` python
389
- import torch
390
359
import datasets
391
- import trl
392
-
393
- from transformers import TrainingArguments، AutoConfig، AutoTokenizer، AutoModelForCausalLM
360
+ from trl import SFTConfig, SFTTrainer
394
361
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 ,
403
370
)
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,
418
375
)
419
-
420
376
trainer.train()
421
377
```
422
378
@@ -436,39 +392,21 @@ trainer.train()
436
392
فيما يلي نص برمجي بسيط يوضح كيفية ضبط نموذج [ google/gemma-2b] ( https://huggingface.co/google/gemma-2b ) على مجموعة بيانات IMDB في الدقة الكاملة:
437
393
438
394
``` python
439
- import torch
440
395
import datasets
441
- from transformers import TrainingArguments، AutoTokenizer، AutoModelForCausalLM
442
- import trl
396
+ from trl import SFTConfig, SFTTrainer
443
397
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 ,
457
404
)
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,
470
409
)
471
-
472
410
trainer.train()
473
411
```
474
412
@@ -524,39 +462,21 @@ trainer.train()
524
462
525
463
فيما يلي نص برمجى بسيط لشرح كيفية ضبط [ google/gemma-2b] ( https://huggingface.co/google/gemma-2b ) بدقة على مجموعة بيانات IMDB بدقة كاملة:
526
464
``` python
527
- import torch
528
465
import datasets
529
- from transformers import TrainingArguments, AutoTokenizer, AutoModelForCausalLM
530
- import trl
466
+ from trl import SFTConfig, SFTTrainer
531
467
532
468
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 ,
538
472
optim = " schedule_free_adamw" ,
539
473
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" ,
545
474
)
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" ,
554
477
args = args,
555
478
train_dataset = train_dataset,
556
- dataset_text_field = ' text' ,
557
- max_seq_length = 1024 ,
558
479
)
559
-
560
480
trainer.train()
561
481
```
562
482
## تسريع ومدرب
0 commit comments