在 Google Colab 上 运行 一个 python 脚本时,有没有办法 select 设备?
Is there a way to select a device when running a python script on Google Colab?
我正在尝试 运行 run_language_modeling.py,这是 python script from hugging face。但是,当我尝试 运行 它时,我注意到我只使用我的 CPU 而不是 GPU(即使环境设置为使用它。所以我正在寻找一个告诉脚本使用 GPU 的方法。
这是我的...
验证我使用的是 GPU:!nvidia-smi
这表明:
Fri Feb 25 11:55:13 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.32.03 Driver Version: 460.32.03 CUDA Version: 11.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla K80 Off | 00000000:00:04.0 Off | 0 |
| N/A 32C P8 26W / 149W | 0MiB / 11441MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
然后,我 运行 将调用 .py
文件的以下脚本:
!python ./run_language_modeling.py \
--output_dir=output \
--model_type=bert \
--do_train \
--train_data_file=train.txt \
--do_eval \
--eval_data_file=test.txt \
--per_gpu_train_batch_size 8 \
--per_gpu_eval_batch_size 4 \
--num_train_epochs 20 \
--output_dir ./ \
--save_steps 1000 \
--save_total_limit 2 \
--mlm \
--overwrite_output_dir \
--block_size 128 \
--line_by_line \
--tokenizer_name bert-base-uncased
这种情况一直持续到 CPU 使用率达到 100%。我想可能有类似 --device
的东西,但我没能找到它。我在网上看到的其他一些帖子提到我可以做到:
import os
os.environ["CUDA_VISIBLE_DEVICES"]="1"
tf_device='/gpu:0'
到 select 我想要的 GPU,但它并没有真正做任何我能说的事情。我也试过做:
%%shell
export CUDA_VISIBLE_DEVICES=0
有什么建议吗?
import torch
device = torch.device("cpu")
if torch.cuda.is_available():
print("Training on GPU")
device = torch.device("cuda:0")
我正在尝试 运行 run_language_modeling.py,这是 python script from hugging face。但是,当我尝试 运行 它时,我注意到我只使用我的 CPU 而不是 GPU(即使环境设置为使用它。所以我正在寻找一个告诉脚本使用 GPU 的方法。
这是我的...
验证我使用的是 GPU:!nvidia-smi
这表明:
Fri Feb 25 11:55:13 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.32.03 Driver Version: 460.32.03 CUDA Version: 11.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla K80 Off | 00000000:00:04.0 Off | 0 |
| N/A 32C P8 26W / 149W | 0MiB / 11441MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
然后,我 运行 将调用 .py
文件的以下脚本:
!python ./run_language_modeling.py \
--output_dir=output \
--model_type=bert \
--do_train \
--train_data_file=train.txt \
--do_eval \
--eval_data_file=test.txt \
--per_gpu_train_batch_size 8 \
--per_gpu_eval_batch_size 4 \
--num_train_epochs 20 \
--output_dir ./ \
--save_steps 1000 \
--save_total_limit 2 \
--mlm \
--overwrite_output_dir \
--block_size 128 \
--line_by_line \
--tokenizer_name bert-base-uncased
这种情况一直持续到 CPU 使用率达到 100%。我想可能有类似 --device
的东西,但我没能找到它。我在网上看到的其他一些帖子提到我可以做到:
import os
os.environ["CUDA_VISIBLE_DEVICES"]="1"
tf_device='/gpu:0'
到 select 我想要的 GPU,但它并没有真正做任何我能说的事情。我也试过做:
%%shell
export CUDA_VISIBLE_DEVICES=0
有什么建议吗?
import torch
device = torch.device("cpu")
if torch.cuda.is_available():
print("Training on GPU")
device = torch.device("cuda:0")