diff --git a/sources/accelerate/install.rst b/sources/accelerate/install.rst index 8490be2f..d88586f4 100644 --- a/sources/accelerate/install.rst +++ b/sources/accelerate/install.rst @@ -1,28 +1,20 @@ 安装指南 ============== -本教程面向使用 Accelerate & 昇腾的开发者,帮助完成昇腾环境下 Accelerate 的安装。 +本教程面向使用 Accelerate & NPU 昇腾的开发者,帮助完成昇腾环境下 Accelerate 的安装。 Accelerate 下载安装 -------------------- .. note:: - 阅读本篇前,请确保已按照 :doc:`安装教程 <./install>` 准备好昇腾环境! - 或者直接使用具备昇腾环境的镜像 `ascendai/cann:8.0.rc1-910b-ubuntu22.04 `_, - 更多的版本可至 `ascendai/cann `_ 获取。 + 阅读本篇前,请确保已按照 :doc:`安装教程 <../ascend/quick_install>` 准备好昇腾环境! -启动镜像 -::::::::::::::::: - -.. code-block:: shell - - docker run -itd --network host -v /usr/local/dcmi:/usr/local/dcmi -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi -v /usr/local/Ascend/driver:/usr/local/Ascend/driver -v /etc/ascend_install.info:/etc/ascend_install.info --device /dev/davinci7 --device /dev/davinci_manager --device /dev/devmm_svm --device /dev/hisi_hdc --shm-size 16G --name accelerate ascendai/cann:8.0.rc1-910b-ubuntu22.04 bash 安装 Accelerate 及依赖包 -:::::::::::::::::::::::::: +------------------------ .. code-block:: shell - pip install torch==2.2.0 torch_npu==2.2.0 accelerate -i https://pypi.tuna.tsinghua.edu.cn/simple + pip install torch==2.7.1 torch_npu==2.7.1 accelerate -i https://pypi.tuna.tsinghua.edu.cn/simple diff --git a/sources/accelerate/quick_start.rst b/sources/accelerate/quick_start.rst index 8ec41c08..8f034ee8 100644 --- a/sources/accelerate/quick_start.rst +++ b/sources/accelerate/quick_start.rst @@ -2,7 +2,7 @@ ============ .. note:: - 阅读本篇前,请确保已按照 :doc:`安装指南 <./install>` 准备好昇腾环境及 Accelerate ! + 阅读本篇前,请确保已按照 :doc:`安装指南 <../ascend/quick_install>` 准备好昇腾环境及 Accelerate 本教程以一个简单的 NLP 模型为例,讲述如何使用 Accelerate 在昇腾 NPU 上进行模型的训练。 @@ -37,33 +37,104 @@ 出现如下日志代表训练成功: :: - - Downloading builder script: 5.75kB [00:01, 3.69kB/s] - tokenizer_config.json: 100%|████████████████████████████████████████████████████████████████████████████████████████| 49.0/49.0 [00:00<00:00, 237kB/s] - config.json: 570B [00:00, 2.23MB/s] - vocab.txt: 79.5kB [00:12, 3.45kB/s]Error while downloading from https://hf-mirror.com/bert-base-cased/resolve/main/vocab.txt: HTTPSConnectionPool(host='hf-mirror.com', port=443): Read timed out. - Trying to resume download... - vocab.txt: 213kB [00:07, 15.5kB/s]] - vocab.txt: 91.4kB [00:32, 2.81kB/s] - tokenizer.json: 436kB [00:19, 22.8kB/s] - Downloading readme: 35.3kB [00:01, 26.4kB/s] - Downloading data: 100%|█████████████████████████████████████████████████████████████████████████████████████████████| 649k/649k [00:02<00:00, 288kB/s] - Downloading data: 100%|██████████████████████████████████████████████████████████████████████████████████████████| 75.7k/75.7k [00:00<00:00, 77.8kB/s] - Downloading data: 100%|█████████████████████████████████████████████████████████████████████████████████████████████| 308k/308k [00:01<00:00, 204kB/s] - Generating train split: 100%|███████████████████████████████████████████████████████████████████████████| 3668/3668 [00:00<00:00, 27701.23 examples/s] - Generating validation split: 100%|████████████████████████████████████████████████████████████████████████| 408/408 [00:00<00:00, 73426.42 examples/s] - Generating test split: 100%|███████████████████████████████████████████████████████████████████████████| 1725/1725 [00:00<00:00, 246370.91 examples/s] - Map: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 3668/3668 [00:01<00:00, 3378.05 examples/s] - Map: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████| 408/408 [00:00<00:00, 3553.72 examples/s] - Map: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 1725/1725 [00:00<00:00, 5109.03 examples/s] - model.safetensors: 100%|███████████████████████████████████████████████████████████████████████████████████████████| 436M/436M [02:42<00:00, 2.68MB/s] + + Downloading builder script: 5.75kB [00:00, 7.99kB/s] + tokenizer_config.json: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 49.0/49.0 [00:00<00:00, 345kB/s] + config.json: 570B [00:00, 3.12MB/s] + vocab.txt: 213kB [00:00, 477kB/s] + tokenizer.json: 436kB [00:06, 69.4kB/s] + README.md: 35.3kB [00:00, 67.4kB/s] + train-00000-of-00001.parquet: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 649k/649k [00:00<00:00, 6.23MB/s] + validation-00000-of-00001.parquet: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 75.7k/75.7k [00:00<00:00, 142MB/s] + test-00000-of-00001.parquet: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 308k/308k [00:00<00:00, 39.0MB/s] + Generating train split: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3668/3668 [00:00<00:00, 247461.91 examples/s] + Generating validation split: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 408/408 [00:00<00:00, 128262.33 examples/s] + Generating test split: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1725/1725 [00:00<00:00, 369499.74 examples/s] + Map: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3668/3668 [00:00<00:00, 13791.03 examples/s] + Map: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 408/408 [00:00<00:00, 11843.97 examples/s] + Map: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1725/1725 [00:00<00:00, 14229.78 examples/s] + model.safetensors: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 436M/436M [00:06<00:00, 66.7MB/s] Some weights of BertForSequenceClassification were not initialized from the model checkpoint at bert-base-cased and are newly initialized: ['classifier.bias', 'classifier.weight'] You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference. - huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks... - To disable this warning, you can either: - - Avoid using `tokenizers` before the fork if possible - - Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false) You're using a BertTokenizerFast tokenizer. Please note that with a fast tokenizer, using the `__call__` method is faster than using a method to encode the text followed by a call to the `pad` method to get a padded encoding. - epoch 0: {'accuracy': 0.8014705882352942, 'f1': 0.8439306358381503} - epoch 1: {'accuracy': 0.8578431372549019, 'f1': 0.8975265017667845} - epoch 2: {'accuracy': 0.8700980392156863, 'f1': 0.9087779690189329} + ===== tensor([1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, + 1, 0, 1, 1, 1, 1, 0, 1], device='npu:0') + ===== tensor([0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 0, 0, 1, 0], device='npu:0') + ===== tensor([1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1], device='npu:0') + ===== tensor([0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, + 1, 0, 0, 1, 1, 1, 1, 0], device='npu:0') + ===== tensor([1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, + 0, 1, 0, 1, 1, 0, 0, 1], device='npu:0') + ===== tensor([1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, + 0, 1, 0, 0, 0, 1, 1, 0], device='npu:0') + ===== tensor([0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, + 0, 1, 0, 1, 0, 1, 1, 0], device='npu:0') + ===== tensor([1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, + 0, 0, 1, 1, 0, 1, 0, 0], device='npu:0') + ===== tensor([1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, + 1, 0, 0, 0, 1, 1, 1, 1], device='npu:0') + ===== tensor([1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, + 0, 0, 1, 0, 0, 1, 0, 0], device='npu:0') + ===== tensor([0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 1, 0, 1], device='npu:0') + ===== tensor([0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, + 1, 0, 1, 1, 1, 1, 0, 1], device='npu:0') + ===== tensor([1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1], + device='npu:0') + epoch 0: {'accuracy': 0.7990196078431373, 'f1': 0.8392156862745098} + ===== tensor([1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, + 1, 0, 1, 1, 1, 1, 0, 1], device='npu:0') + ===== tensor([1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 1, 1], device='npu:0') + ===== tensor([1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1], device='npu:0') + ===== tensor([0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, + 1, 0, 0, 1, 1, 1, 1, 0], device='npu:0') + ===== tensor([1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, + 1, 1, 1, 1, 1, 1, 0, 1], device='npu:0') + ===== tensor([1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, + 1, 1, 0, 1, 0, 1, 1, 0], device='npu:0') + ===== tensor([0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, + 1, 1, 0, 1, 0, 1, 1, 0], device='npu:0') + ===== tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 0, 1, 1, 0, 0], device='npu:0') + ===== tensor([1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 0, 0, 0, 1, 1, 1], device='npu:0') + ===== tensor([1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, + 1, 0, 1, 0, 0, 1, 0, 0], device='npu:0') + ===== tensor([0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 1, 1, 0, 1], device='npu:0') + ===== tensor([1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, + 1, 0, 1, 1, 1, 1, 1, 1], device='npu:0') + ===== tensor([1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1], + device='npu:0') + epoch 1: {'accuracy': 0.8602941176470589, 'f1': 0.8998242530755711} + ===== tensor([1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, + 1, 0, 1, 1, 1, 1, 0, 1], device='npu:0') + ===== tensor([1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 1, 1], device='npu:0') + ===== tensor([1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1], device='npu:0') + ===== tensor([0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, + 1, 0, 0, 1, 1, 1, 1, 0], device='npu:0') + ===== tensor([1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, + 1, 1, 1, 1, 1, 1, 0, 1], device='npu:0') + ===== tensor([1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, + 1, 1, 0, 1, 0, 1, 1, 0], device='npu:0') + ===== tensor([0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, + 1, 1, 0, 1, 1, 1, 1, 0], device='npu:0') + ===== tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 0, 1, 1, 0, 0], device='npu:0') + ===== tensor([1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 0, 0, 1, 1, 1], device='npu:0') + ===== tensor([1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, + 1, 0, 1, 0, 1, 1, 0, 0], device='npu:0') + ===== tensor([0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 1, 1, 0, 1], device='npu:0') + ===== tensor([1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, + 1, 0, 1, 1, 1, 1, 1, 1], device='npu:0') + ===== tensor([1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1], + device='npu:0') + epoch 2: {'accuracy': 0.8627450980392157, 'f1': 0.903114186851211} \ No newline at end of file