Buckets:
| # π€ Accelerateλ₯Ό νμ©ν λΆμ° νμ΅[[distributed-training-with-accelerate]] | |
| λͺ¨λΈμ΄ 컀μ§λ©΄μ λ³λ ¬ μ²λ¦¬λ μ νλ νλμ¨μ΄μμ λ ν° λͺ¨λΈμ νλ ¨νκ³ νλ ¨ μλλ₯Ό λͺ λ°°λ‘ κ°μννκΈ° μν μ λ΅μΌλ‘ λ±μ₯νμ΅λλ€. Hugging Faceμμλ μ¬μ©μκ° νλμ λ¨Έμ μ μ¬λ¬ κ°μ GPUλ₯Ό μ¬μ©νλ μ¬λ¬ λ¨Έμ μ μ¬λ¬ κ°μ GPUλ₯Ό μ¬μ©νλ λͺ¨λ μ νμ λΆμ° μ€μ μμ π€ Transformers λͺ¨λΈμ μ½κ² νλ ¨ν μ μλλ‘ λκΈ° μν΄ [π€ Accelerate](https://huggingface.co/docs/accelerate) λΌμ΄λΈλ¬λ¦¬λ₯Ό λ§λ€μμ΅λλ€. μ΄ νν 리μΌμμλ λΆμ° νκ²½μμ νλ ¨ν μ μλλ‘ κΈ°λ³Έ PyTorch νλ ¨ 루νλ₯Ό 컀μ€ν°λ§μ΄μ¦νλ λ°©λ²μ μμλ΄ μλ€. | |
| ## μ€μ [[setup]] | |
| π€ Accelerate μ€μΉ μμνκΈ°: | |
| ```bash | |
| pip install accelerate | |
| ``` | |
| κ·Έ λ€μ, `Accelerator` κ°μ²΄λ₯Ό λΆλ¬μ€κ³ μμ±ν©λλ€. `Accelerator`λ μλμΌλ‘ λΆμ° μ€μ μ νμ κ°μ§νκ³ νλ ¨μ νμν λͺ¨λ κ΅¬μ± μμλ₯Ό μ΄κΈ°νν©λλ€. μ₯μΉμ λͺ¨λΈμ λͺ μμ μΌλ‘ λ°°μΉν νμλ μμ΅λλ€. | |
| ```py | |
| >>> from accelerate import Accelerator | |
| >>> accelerator = Accelerator() | |
| ``` | |
| ## κ°μνλ₯Ό μν μ€λΉ[[prepare-to-accelerate]] | |
| λ€μ λ¨κ³λ κ΄λ ¨λ λͺ¨λ νλ ¨ κ°μ²΄λ₯Ό `prepare` λ©μλμ μ λ¬νλ κ²μ λλ€. μ¬κΈ°μλ νλ ¨ λ° νκ° λ°μ΄ν°λ‘λ, λͺ¨λΈ λ° μ΅ν°λ§μ΄μ κ° ν¬ν¨λ©λλ€: | |
| ```py | |
| >>> train_dataloader, eval_dataloader, model, optimizer = accelerator.prepare( | |
| ... train_dataloader, eval_dataloader, model, optimizer | |
| ... ) | |
| ``` | |
| ## λ°±μλ(Backward)[[backward]] | |
| λ§μ§λ§μΌλ‘ νλ ¨ 루νμ μΌλ°μ μΈ `loss.backward()`λ₯Ό π€ Accelerateμ `backward` λ©μλλ‘ λ체νκΈ°λ§ νλ©΄ λ©λλ€: | |
| ```py | |
| >>> for epoch in range(num_epochs): | |
| ... for batch in train_dataloader: | |
| ... outputs = model(**batch) | |
| ... loss = outputs.loss | |
| ... accelerator.backward(loss) | |
| ... optimizer.step() | |
| ... lr_scheduler.step() | |
| ... optimizer.zero_grad() | |
| ... progress_bar.update(1) | |
| ``` | |
| λ€μ μ½λμμ λ³Ό μ μλ―μ΄, νλ ¨ 루νμ μ½λ λ€ μ€λ§ μΆκ°νλ©΄ λΆμ° νμ΅μ νμ±νν μ μμ΅λλ€! | |
| ```diff | |
| + from accelerate import Accelerator | |
| from transformers import AdamW, AutoModelForSequenceClassification, get_scheduler | |
| + accelerator = Accelerator() | |
| model = AutoModelForSequenceClassification.from_pretrained(checkpoint, num_labels=2) | |
| optimizer = AdamW(model.parameters(), lr=3e-5) | |
| - device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu") | |
| - model.to(device) | |
| + train_dataloader, eval_dataloader, model, optimizer = accelerator.prepare( | |
| + train_dataloader, eval_dataloader, model, optimizer | |
| + ) | |
| num_epochs = 3 | |
| num_training_steps = num_epochs * len(train_dataloader) | |
| lr_scheduler = get_scheduler( | |
| "linear", | |
| optimizer=optimizer, | |
| num_warmup_steps=0, | |
| num_training_steps=num_training_steps | |
| ) | |
| progress_bar = tqdm(range(num_training_steps)) | |
| model.train() | |
| for epoch in range(num_epochs): | |
| for batch in train_dataloader: | |
| - batch = {k: v.to(device) for k, v in batch.items()} | |
| outputs = model(**batch) | |
| loss = outputs.loss | |
| - loss.backward() | |
| + accelerator.backward(loss) | |
| optimizer.step() | |
| lr_scheduler.step() | |
| optimizer.zero_grad() | |
| progress_bar.update(1) | |
| ``` | |
| ## νμ΅[[train]] | |
| κ΄λ ¨ μ½λλ₯Ό μΆκ°ν νμλ μ€ν¬λ¦½νΈλ Colaboratoryμ κ°μ λ ΈνΈλΆμμ νλ ¨μ μμνμΈμ. | |
| ### μ€ν¬λ¦½νΈλ‘ νμ΅νκΈ°[[train-with-a-script]] | |
| μ€ν¬λ¦½νΈμμ νλ ¨μ μ€ννλ κ²½μ°, λ€μ λͺ λ Ήμ μ€ννμ¬ κ΅¬μ± νμΌμ μμ±νκ³ μ μ₯ν©λλ€: | |
| ```bash | |
| accelerate config | |
| ``` | |
| Then launch your training with: | |
| ```bash | |
| accelerate launch train.py | |
| ``` | |
| ### λ ΈνΈλΆμΌλ‘ νμ΅νκΈ°[[train-with-a-notebook]] | |
| Collaboratoryμ TPUλ₯Ό μ¬μ©νλ €λ κ²½μ°, λ ΈνΈλΆμμλ π€ Accelerateλ₯Ό μ€νν μ μμ΅λλ€. νλ ¨μ λ΄λΉνλ λͺ¨λ μ½λλ₯Ό ν¨μλ‘ κ°μΈμ `notebook_launcher`μ μ λ¬νμΈμ: | |
| ```py | |
| >>> from accelerate import notebook_launcher | |
| >>> notebook_launcher(training_function) | |
| ``` | |
| π€ Accelerate λ° λ€μν κΈ°λ₯μ λν μμΈν λ΄μ©μ [documentation](https://huggingface.co/docs/accelerate)λ₯Ό μ°Έμ‘°νμΈμ. | |
Xet Storage Details
- Size:
- 4.44 kB
- Xet hash:
- 0beda881f2fe524885a59f2165368dca36ade09d4abb843e4d5fd66672c4b8ef
Β·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.