mirror of
https://github.com/huggingface/transformers.git
synced 2025-07-15 18:48:24 +06:00

* [i18n-HI] Translated accelerate page to Hindi * Update docs/source/hi/accelerate.md Co-authored-by: K.B.Dharun Krishna <kbdharunkrishna@gmail.com> * Update docs/source/hi/accelerate.md Co-authored-by: K.B.Dharun Krishna <kbdharunkrishna@gmail.com> * Update docs/source/hi/accelerate.md Co-authored-by: K.B.Dharun Krishna <kbdharunkrishna@gmail.com> * Update docs/source/hi/accelerate.md Co-authored-by: K.B.Dharun Krishna <kbdharunkrishna@gmail.com> --------- Co-authored-by: Kay <kay@Kays-MacBook-Pro.local> Co-authored-by: K.B.Dharun Krishna <kbdharunkrishna@gmail.com>
137 lines
7.6 KiB
Markdown
137 lines
7.6 KiB
Markdown
<!--Copyright 2022 The HuggingFace Team. All rights reserved.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
|
|
an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations under the License.
|
|
|
|
тЪая╕П Note that this file is in Markdown but contain specific syntax for our doc-builder (similar to MDX) that may not be
|
|
rendered properly in your Markdown viewer.
|
|
|
|
-->
|
|
|
|
# рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд╕рд╛рде ЁЯдЧ Accelerate
|
|
|
|
рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдореЙрдбрд▓ рдмрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рд╕рдорд╛рдирд╛рдВрддрд░рддрд╛ рд╕реАрдорд┐рдд рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдмрдбрд╝реЗ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреА рдЧрддрд┐ рдХреЛ рдХрдИ рдЖрджреЗрд╢реЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдгрдиреАрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрднрд░реА рд╣реИред рд╣рдЧрд┐рдВрдЧ рдлреЗрд╕ рдореЗрдВ, рд╣рдордиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рддрд░рд┐рдд рд╕реЗрдЯрдЕрдк рдкрд░ ЁЯдЧ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░реНрд╕ рдореЙрдбрд▓ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП [ЁЯдЧ Accelerate](https://huggingface.co/docs/accelerate) рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдпрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рд╡рд╣ рдПрдХ рдорд╢реАрди рдкрд░ рдХрдИ GPU рд╣реЛрдВ рдпрд╛ рдХрдИ рдорд╢реАрдиреЛрдВ рдореЗрдВ рдХрдИ GPUред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдЬрд╛рдиреЗрдВ рдХрд┐ рдЕрдкрдиреЗ рдореВрд▓ PyTorch рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд▓реВрдк рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рд╡рд┐рддрд░рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХреЗред
|
|
|
|
## рд╕реЗрдЯрдЕрдк
|
|
|
|
ЁЯдЧ Accelerate рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВ:
|
|
|
|
```bash
|
|
pip install accelerate
|
|
```
|
|
|
|
рдлрд┐рд░ рдПрдХ [`~accelerate.Accelerator`] рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рдмрдирд╛рдПрдВред [`~accelerate.Accelerator`] рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд╡рд┐рддрд░рд┐рдд рд╕реЗрдЯрдЕрдк рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХреЛ рдХрд┐рд╕реА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
|
|
|
|
```py
|
|
>>> from accelerate import Accelerator
|
|
|
|
>>> accelerator = Accelerator()
|
|
```
|
|
|
|
## рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреА рддреИрдпрд╛рд░реА
|
|
|
|
рдЕрдЧрд▓рд╛ рдХрджрдо рд╕рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╡рд╕реНрддреБрдУрдВ рдХреЛ [`~accelerate.Accelerator.prepare`] рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдЖрдкрдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рдореВрд▓реНрдпрд╛рдВрдХрди DataLoaders, рдПрдХ рдореЙрдбрд▓ рдФрд░ рдПрдХ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
|
|
|
|
```py
|
|
>>> train_dataloader, eval_dataloader, model, optimizer = accelerator.prepare(
|
|
... train_dataloader, eval_dataloader, model, optimizer
|
|
... )
|
|
```
|
|
|
|
## рдмреИрдХрд╡рд░реНрдб
|
|
|
|
рдЕрдВрддрд┐рдо рдЬреЛрдбрд╝ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд▓реВрдк рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп `loss.backward()` рдХреЛ ЁЯдЧ Accelerate рдХреЗ [`~accelerate.Accelerator.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)
|
|
```
|
|
|
|
## рдкреНрд░рд╢рд┐рдХреНрд╖рдг
|
|
|
|
рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдкрдиреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреЛрдб рдХреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝ рджреА рд╣реИрдВ, рддреЛ рдЕрдкрдиреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдХреЛрд▓реИрдмреЛрд░реЗрдЯрд░реА рдЬреИрд╕реЗ рдиреЛрдЯрдмреБрдХ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред
|
|
|
|
### рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рд╢рд┐рдХреНрд╖рдг
|
|
|
|
рдпрджрд┐ рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЕрдкрдирд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдФрд░ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
|
|
|
|
```bash
|
|
accelerate config
|
|
```
|
|
|
|
рдлрд┐рд░ рдЕрдкрдиреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЛ рдЗрд╕ рддрд░рд╣ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:
|
|
|
|
```bash
|
|
accelerate launch train.py
|
|
```
|
|
|
|
### рдиреЛрдЯрдмреБрдХ рдХреЗ рд╕рд╛рде рдкреНрд░рд╢рд┐рдХреНрд╖рдг
|
|
|
|
ЁЯдЧ Accelerate рдПрдХ рдиреЛрдЯрдмреБрдХ рдореЗрдВ рднреА рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк Colaboratory рдХреЗ TPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╕рднреА рдХреЛрдб рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ, рдФрд░ рдЗрд╕реЗ [`~accelerate.notebook_launcher`] рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВ:
|
|
|
|
```py
|
|
>>> from accelerate import notebook_launcher
|
|
|
|
>>> notebook_launcher(training_function)
|
|
```
|
|
|
|
ЁЯдЧ Accelerate рдФрд░ рдЗрд╕рдХреА рд╕рдореГрджреНрдз рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, [рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг](https://huggingface.co/docs/accelerate) рджреЗрдЦреЗрдВред
|