最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Py accelerate的簡介安裝使用方法詳解

 更新時間:2025年07月09日 10:29:48   作者:一個處女座的程序猿  
Accelerate是Huggingface開發(fā)的PyTorch庫,抽象分布式訓練和混合精度樣板代碼,支持多設備(CPU/GPU/TPU)及FP16/BFloat16混合精度,集成CLI與Notebook啟動方式,便于快速部署和擴展模型訓練,本文大家介紹Py accelerate的簡介安裝使用方法之詳細攻略,感興趣的朋友一起看看吧

accelerate的簡介

       Accelerate 是一個為 PyTorch 用戶設計的庫,旨在幫助簡化分布式訓練和混合精度訓練的過程。它提供了一種簡單且靈活的方式來加速和擴展您的 PyTorch 訓練腳本,而無需編寫冗長的樣板代碼。使用戶能夠更輕松地利用大規(guī)模計算資源并加速模型訓練過程。
       2023年2月,Huggingface發(fā)布了Accelerate庫,它可以在任何類型的設備上運行你的原始PyTorch訓練腳本。accelerate的易于集成的特點如下所示:
>> Accelerate是為PyTorch用戶設計的,它們喜歡編寫PyTorch模型的訓練循環(huán),但不愿意編寫和維護使用多GPU/TPU/fp16所需的樣板代碼。
>> Accelerate僅抽象與多GPU/TPU/fp16相關的樣板代碼,并保持其余代碼不變。

       當您希望在分布式環(huán)境中輕松運行您的訓練腳本而又不希望放棄對訓練循環(huán)的完全控制時,您應該使用Accelerate。這不是一個在PyTorch之上的高級框架,只是一個薄包裝,因此您不必學習一個新的庫。事實上,Accelerate的整個API只有一個類,即Accelerator對象。
       但是,如果您不想自己編寫訓練循環(huán),那么您就不應該使用Accelerate。有很多在PyTorch之上的高級庫可以提供這個功能,但Accelerate不是其中之一。

GitHub
GitHub - huggingface/accelerate: ?? A simple way to train and use PyTorch models with multi-GPU, TPU, mixed-precision

1、Accelerate 提供的主要功能和優(yōu)勢:

分布式訓練支持: Accelerate 可以幫助您在單個節(jié)點或多個節(jié)點上進行分布式訓練,包括多CPU、多GPU和TPU設置。它抽象出了與分布式訓練相關的樣板代碼,使您可以專注于訓練邏輯而不必擔心通信和同步問題。

混合精度訓練支持: Accelerate 提供了與混合精度訓練(如半精度浮點數(shù))相關的工具和優(yōu)化。通過使用混合精度訓練,您可以在幾乎不降低模型性能的同時減少內(nèi)存使用和計算成本。

設備放置和管理: Accelerate 可以自動處理設備放置,將數(shù)據(jù)和模型移動到正確的設備上,以便充分利用可用的計算資源。這簡化了跨設備進行訓練的過程,并幫助您避免手動管理設備分配的復雜性。

高度集成: Accelerate 可與 PyTorch 生態(tài)系統(tǒng)中的其他工具和庫無縫集成。它與常用的 PyTorch 數(shù)據(jù)加載器和優(yōu)化器兼容,并且可以與諸如 DeepSpeed、Megatron-LM 和 PyTorch Fully Sharded Data Parallel (FSDP) 等擴展一起使用。

可配置的 CLI 工具: Accelerate 還提供了一個命令行界面 (CLI) 工具,使您能夠方便地配置和測試訓練環(huán)境,而無需手動編寫啟動腳本。

2、構建在Accelerate之上的框架和庫

如果您喜歡Accelerate的簡潔性,但希望在其功能上建立一個更高級的抽象層,一些構建在Accelerate之上的框架和庫列在下面:

Animus

Animus是一個運行機器學習實驗的簡約框架。Animus突出了ML實驗中常見的“斷點”,并為它們提供了一個統(tǒng)一的界面。

Catalyst

Catalyst是一個用于深度學習研究和開發(fā)的PyTorch框架。它專注于可重現(xiàn)性、快速實驗和代碼重用,以便您可以創(chuàng)建新的東西,而不是編寫另一個訓練循環(huán)。Catalyst提供了一個Runner,用于連接實驗的所有部分:硬件后端、數(shù)據(jù)轉換、模型訓練和推理邏輯。

fastai

fastai是一個用于深度學習的PyTorch框架,它通過現(xiàn)代最佳實踐簡化了快速訓練和準確的神經(jīng)網(wǎng)絡。fastai提供了一個Learner,用于處理深度學習算法的訓練、微調(diào)和推理。

Finetuner

Finetuner是一個服務,可以為語義搜索、視覺相似性搜索、跨模態(tài)文本<->圖像搜索、推薦系統(tǒng)、聚類、重復檢測、異常檢測或其他用途創(chuàng)建更高質(zhì)量的嵌入。

InvokeAI

InvokeAI是穩(wěn)定擴散模型的創(chuàng)意引擎,提供業(yè)界領先的WebUI、終端使用支持,并作為許多商業(yè)產(chǎn)品的基礎。

Kornia

Kornia是一個可微分的庫,可以將經(jīng)典計算機視覺集成到深度學習模型中。Kornia提供了一個Trainer,專門用于訓練和微調(diào)庫中支持的深度學習算法。

Open Assistant

Open Assistant是一個基于聊天的助手,能夠理解任務、與其它系統(tǒng)進行交互,并動態(tài)檢索信息以完成任務。

pytorch-accelerated

pytorch-accelerated是一個輕量級的訓練庫,具有圍繞通用Trainer的簡化功能集,非常注重簡單性和透明性;使用戶可以了解底層發(fā)生了什么,但無需自己編寫和維護樣板代碼!

Stable Diffusion web UI

Stable Diffusion web UI是一個基于Gradio庫的開源瀏覽器界面,用于穩(wěn)定擴散。

torchkeras

torchkeras是一個簡單的工具,可以以keras風格訓練pytorch模型,在notebook中提供了一個動態(tài)且美觀的繪圖,用于監(jiān)視您的損失或指標。

accelerate的安裝

1、安裝

本存儲庫在Python 3.8+和PyTorch 1.10.0+上進行了測試,建議在虛擬環(huán)境中安裝Accelerate

首先,使用您要使用的Python版本創(chuàng)建一個虛擬環(huán)境并激活它。

然后,您將需要安裝PyTorch:請參閱官方安裝頁面以了解適用于您平臺的特定安裝命令。然后,可以使用pip安裝Accelerate,如下所示:

pip install accelerate

(1)、支持的集成

僅CPU
單個節(jié)點(機器上的多CPU)
多個節(jié)點(機器上的多CPU)
單個GPU
單個節(jié)點上的多GPU(機器上的多GPU)
多個節(jié)點上的多GPU(機器上的多GPU)
TPU
FP16/BFloat16混合精度
具有Transformer Engine的FP8混合精度
DeepSpeed支持(實驗性)
PyTorch Fully Sharded(實驗性)

2、啟動腳本

>> Accelerate還提供了一個可選的命令行工具,允許您在啟動腳本之前快速配置和測試您的訓練環(huán)境。無需記住如何使用torch.distributed.run或編寫特定的TPU訓練啟動器!在您的機器上只需運行:

accelerate config

然后回答所提出的問題。這將生成一個配置文件,將在執(zhí)行以下命令時自動使用以正確設置默認選項:

accelerate launch my_script.py --args_to_my_script

例如,以下是如何在MRPC任務上運行GLUE示例(從repo的根目錄):

accelerate launch examples/nlp_example.py

此CLI工具是可選的,您仍然可以根據(jù)需要使用python my_script.py或python -m torchrun my_script.py。

3、使用MPI啟動多CPU運行

這是另一種使用MPI啟動多CPU運行的方法。您可以在此頁面上了解如何安裝Open MPI。您也可以使用Intel MPI或MVAPICH。一旦在您的集群上設置了MPI,只需運行:

mpirun -np 2 python examples/nlp_example.py

4、使用DeepSpeed啟動訓練

Accelerate支持使用DeepSpeed在單個/多個GPU上進行訓練。要使用它,您不需要更改訓練代碼中的任何內(nèi)容;您可以使用accelerate config來設置所有內(nèi)容。但是,如果您希望從Python腳本中調(diào)整DeepSpeed相關參數(shù),我們?yōu)槟峁┝薉eepSpeedPlugin。

from accelerate import Accelerator, DeepSpeedPlugin
# deepspeed需要預先知道梯度累積步數(shù),所以不要忘記傳遞它。請記住,您仍然需要自己進行梯度累積,就像您在沒有使用deepspeed時所做的那樣
deepspeed_plugin = DeepSpeedPlugin(zero_stage=2, gradient_accumulation_steps=2)
accelerator = Accelerator(mixed_precision='fp16', deepspeed_plugin=deepspeed_plugin)
# 如何保存您的Transformer?
accelerator.wait_for_everyone()
unwrapped_model = accelerator.unwrap_model(model)
unwrapped_model.save_pretrained(save_dir, save_function=accelerator.save, state_dict=accelerator.get_state_dict(model))

注意:目前DeepSpeed支持處于實驗階段。如果遇到問題,請?zhí)岢鰡栴}。

5、從notebook啟動訓練

Accelerate還提供了一個notebook_launcher函數(shù),您可以在筆記本中使用它來啟動分布式訓練。這對于具有TPU后端的Colab或Kaggle筆記本特別有用。只需在一個訓練功能中定義您的訓練循環(huán),然后在您的最后一個單元格中添加:

from accelerate import notebook_launcher
notebook_launcher(training_function)

您可以在此notebook中找到一個示例。在Colab中打開

地址
notebooks/examples/accelerate_examples/simple_nlp_example.ipynb at main · huggingface/notebooks · GitHub

accelerate的使用方法

1、基礎用法

(1)、可以在任何類型的單節(jié)點或分布式節(jié)點設置:向任何標準的PyTorch訓練腳本添加5行代碼

如您在這個例子中所見,通過向任何標準的PyTorch訓練腳本添加5行代碼,您現(xiàn)在可以在任何類型的單節(jié)點或分布式節(jié)點設置(單CPU,單GPU,多GPU和TPU),以及帶或不帶混合精度(fp16)下運行。

  import torch
  import torch.nn.functional as F
  from datasets import load_dataset
+ from accelerate import Accelerator
+ accelerator = Accelerator()
- device = 'cpu'
+ device = accelerator.device
  model = torch.nn.Transformer().to(device)
  optimizer = torch.optim.Adam(model.parameters())
  dataset = load_dataset('my_dataset')
  data = torch.utils.data.DataLoader(dataset, shuffle=True)
+ model, optimizer, data = accelerator.prepare(model, optimizer, data)
  model.train()
  for epoch in range(10):
      for source, targets in data:
          source = source.to(device)
          targets = targets.to(device)
          optimizer.zero_grad()
          output = model(source)
          loss = F.cross_entropy(output, targets)
-         loss.backward()
+         accelerator.backward(loss)
          optimizer.step()

特別地,相同的代碼可以在本地機器上進行調(diào)試,也可以在您的訓練環(huán)境中運行,而無需修改。

(2)、處理設備放置

Accelerate甚至為您處理設備放置(這需要對您的代碼進行一些更改,但通常更安全),因此您甚至可以進一步簡化訓練循環(huán):

  import torch
  import torch.nn.functional as F
  from datasets import load_dataset
+ from accelerate import Accelerator
- device = 'cpu'
+ accelerator = Accelerator()
- model = torch.nn.Transformer().to(device)
+ model = torch.nn.Transformer()
  optimizer = torch.optim.Adam(model.parameters())
  dataset = load_dataset('my_dataset')
  data = torch.utils.data.DataLoader(dataset, shuffle=True)
+ model, optimizer, data = accelerator.prepare(model, optimizer, data)
  model.train()
  for epoch in range(10):
      for source, targets in data:
-         source = source.to(device)
-         targets = targets.to(device)
          optimizer.zero_grad()
          output = model(source)
          loss = F.cross_entropy(output, targets)
-         loss.backward()
+         accelerator.backward(loss)
          optimizer.step()

相關文章

  • PyTorch中的C++擴展實現(xiàn)

    PyTorch中的C++擴展實現(xiàn)

    這篇文章主要介紹了PyTorch中的C++擴展實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • python socket多線程通訊實例分析(聊天室)

    python socket多線程通訊實例分析(聊天室)

    這篇文章主要介紹了python socket多線程通訊方法,以聊天室程序?qū)嵗治隽薖ython基于Socket實現(xiàn)多線程通信的相關技巧,需要的朋友可以參考下
    2016-04-04
  • 詳談python3中用for循環(huán)刪除列表中元素的坑

    詳談python3中用for循環(huán)刪除列表中元素的坑

    下面小編就為大家分享一篇詳談python3中用for循環(huán)刪除列表中元素的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python刪除過期文件的方法

    python刪除過期文件的方法

    這篇文章主要介紹了python刪除過期文件的方法,涉及Python日期與文件的相關操作技巧,需要的朋友可以參考下
    2015-05-05
  • 使用Python的Zato發(fā)送AMQP消息的教程

    使用Python的Zato發(fā)送AMQP消息的教程

    這篇文章主要介紹了使用Python的Zato發(fā)送AMQP消息的教程,主要是基于一些Zato的圖形化界面進行操作,需要的朋友可以參考下
    2015-04-04
  • 新一代python包管理軟件mamba的使用

    新一代python包管理軟件mamba的使用

    新一代python的包管理軟件mambaMamba 是一個高性能的跨平臺包管理器,用于替代和擴展 Conda,采用 C++ 重構,實現(xiàn)多線程的倉庫數(shù)據(jù)和包文件并行下載,大幅提升依賴解析速度
    2025-06-06
  • 解決pycharm運行程序出現(xiàn)卡住scanning files to index索引的問題

    解決pycharm運行程序出現(xiàn)卡住scanning files to index索引的問題

    今天小編就為大家分享一篇解決pycharm運行程序出現(xiàn)卡住scanning files to index索引的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • pandas每次多Sheet寫入文件的方法

    pandas每次多Sheet寫入文件的方法

    今天小編就為大家分享一篇pandas每次多Sheet寫入文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python3使用正則表達式爬取內(nèi)涵段子示例

    Python3使用正則表達式爬取內(nèi)涵段子示例

    這篇文章主要介紹了Python3使用正則表達式爬取內(nèi)涵段子,涉及Python正則匹配與文件讀寫相關操作技巧,需要的朋友可以參考下
    2018-04-04
  • 使用Python高效獲取網(wǎng)絡數(shù)據(jù)的操作指南

    使用Python高效獲取網(wǎng)絡數(shù)據(jù)的操作指南

    網(wǎng)絡爬蟲是一種自動化程序,用于訪問和提取網(wǎng)站上的數(shù)據(jù),Python是進行網(wǎng)絡爬蟲開發(fā)的理想語言,擁有豐富的庫和工具,使得編寫和維護爬蟲變得簡單高效,本文將詳細介紹如何使用Python進行網(wǎng)絡爬蟲開發(fā),包括基本概念、常用庫、數(shù)據(jù)提取方法、反爬措施應對以及實際案例
    2025-03-03

最新評論

周至县| 措美县| 会昌县| 无锡市| 余江县| 安吉县| 左云县| 隆化县| 洞口县| 固阳县| 宁波市| 新津县| 博湖县| 正镶白旗| 壶关县| 泉州市| 蓝山县| 镇远县| 逊克县| 白山市| 大同市| 平定县| 万载县| 长海县| 铁岭县| 闽侯县| 壶关县| 贺兰县| 怀化市| 屏南县| 辽阳市| 南投县| 庆城县| 怀化市| 浮山县| 军事| 三台县| 南岸区| 枞阳县| 大姚县| 商河县|