簡単な機械学習をして、CPUとGPUの差を比較してみました。
CPUをサポートされているものも多数ありますが、やはりGPUの方が圧倒的に楽です。
処理速度もですが、サポートの差がCPUとGPUで違う一例を紹介します。
機械学習でCPUとGPUを比較!サポートと処理速度を比べてみた
機械学習でCPUとGPUの差は大きいです。処理速度が全く違います。
また実践する上で重要なことがあります。サポート具合です。
基本的にGPU前提のライブラリとなっていて、CPUがサポートされていない場合があります。
「手持ちのPC環境にGPUが無く、CPUで時間が掛かってもいいからテストしたい」
という方は少なからずいると思います。(昔の筆者がそうでした…)
画像の領域分割(segmentation)で「CPU」と「GPU」の両方でテストしてみました。
今回のテストは、基本的にGPUがサポートされたライブラリの一例ということご了承ください。
世の中にはしっかりCPUまでサポートされている機械学習のライブラリも沢山あります。
実行環境
テストしたPC環境は下記となります。
CPUもGPUもよくある市販のデスクトップに搭載されているスペックです。
- CPU…Core i5 6400
- GPU…NVIDIA GeForce GTX 1650(メモリ4GB)
- メモリ…16GB
- SSD…500GB
またテストしたdocker環境はVitis AIのVer2.5を使用しています。
(Vitis AI…Xilinx(AMD)のFPGAのAI開発環境)
CPU版とGPU版の環境構築などに関しては下記記事で紹介しています。
VItis AI 2.5やPetaLinuxなどインストールしてみたメモ
CPUとGPUの処理速度の比較例
nuScenesのnuImagesという自動車走行の画像データセットを使用しています。
下記イメージのように写真を領域分割(segmentation)した内容です。
人・車・自転車…と各クラスに分類(Semantic Segmentation)までしています。
あくまで一例ですが、CPUとGPUの処理速度の差です。(テストの詳細は後述)
Segmentationのデモの実行だけでなく、モデルの評価・学習でも比較しています。
- デモの実行では、GPUの方が約2倍程度速い。
- モデルの評価・学習では、GPUの方が10数倍と圧倒的に速い。
CPU | GPU | 処理速度差 | |
2000枚のSegmentationデモ(demo) | 53:47 | 27:54 | 1.92倍 |
Segmentationモデル評価(eval) | 3:56:43 | 15:57 | 14.84倍 |
Segmentationモデル学習(train) | 6:33:04 | 22:33 | 17.43倍 |
CPUとGPUのサポートの比較例
docker環境で実行したコマンドはCPU、CPU共に基本的には同じです。
GPUの方が楽で、CPUの方が圧倒的に面倒でした。
- GPUが基本のライブラリなので、CPUでエラー出た場合はプログラム見て自力で修正。
- GPUでは用意されたスクリプトを(Readmeを見て)実行していくだけで簡単。
- 今回は簡単な部類の機械学習。複雑なライブラリだとCPU版に修正できるか分からない…。
CPU版のdocker環境で実行したコマンドは下記です。詳細は後述しています
1 2 3 4 5 6 7 8 9 |
(vitis-ai-pytorch) Vitis-AI /workspace/pt_pointpainting_nuscenes_2.5/semanticfpn > history 1 conda activate vitis-ai-pytorch 2 cd pt_pointpainting_nuscenes_2.5/ 3 cd semanticfpn/ 4 pip install --user -r requirements.txt 5 bash create_seg_mask.sh 6 bash run_demo.sh ←エラー発生のため、プログラム(test.py)を見てスクリプト修正 7 bash run_eval.sh ←エラー発生のため、プログラム(test.py)を見てスクリプト修正 8 bash run_train.sh ←エラー発生のため、プログラム(train.py)を見てプログラム修正 |
GPU版のdocker環境で実行したコマンドは下記です。コマンド自体は変わっていないです
1 2 3 4 5 6 7 8 9 |
(vitis-ai-pytorch) Vitis-AI /workspace/pt_pointpainting_nuscenes_2.5/semanticfpn > history 1 conda activate vitis-ai-pytorch 2 cd pt_pointpainting_nuscenes_2.5/ 3 cd semanticfpn/ 4 pip install --user -r requirements.txt 5 bash create_seg_mask.sh 6 bash run_demo.sh 7 bash run_eval.sh 8 bash run_train.sh |
AIのコンテストで最初に確認した内容
この記事の内容は、(筆者が)AIのコンテストで一番最初にテスト・確認した内容です。
当時の最初の頃はGPU環境が無かったので、「CPUでも対応できる…?」と一度は考えました。
テストしてみると、やはりCPUだとエラー出て凄く面倒であることを再確認しました。
結局AIのコンテストに参加した際にはGPUで対応していました。
コンテストも終わりましたので、CPU版のエラーを修正してみた内容を記事にしてみました。
下記記事でコンテストの内容まとめを紹介しています。(リンク先はこちら)
SegmentationでCPUとGPUを比較したテスト内容
データセット・前処理の準備を行い、CPUとGPUでのデモ・評価・学習を比較していきます。
データセットの準備
XilinxのVitis AI 2.5のサンプルライブラリをダウンロードします。
今回はPointPaintingという3D物体検出の前処理の一部を流用しています.
下記のyamlにダウンロード先が記載されています
https://github.com/Xilinx/Vitis-AI/tree/2.5/model_zoo/model-list/pt_pointpainting_nuscenes_2.5
下記のようにダウンロード・解凍しました。
1 2 |
wget https://www.xilinx.com/bin/public/openDownload?filename=pt_pointpainting_nuscenes_2.5.zip unzip openDownload\?filename\=pt_pointpainting_nuscenes_2.5.zip |
解凍したフォルダにReadmeがありますので、目を通しておきます。
主に使うのはsemanticfpn(物体検出)のフォルダです。
またnuScenesのHPから予め、データセットをダウンロードしておきます。
https://www.nuscenes.org/download
様々なデータセットがありますが、今回は画像のnuImagesを使います。
Metadata 0.59GB、Samples 15.27GBの2つです。
ダウンロードが終わりましたら、dataにnuimagesのフォルダを作り、解凍しておきます。
1 2 |
tar -zxvf nuimages-v1.0-all-metadata.tgz tar -zxvf nuimages-v1.0-all-samples.tgz |
Readmeに従った、下記形になるはずです。
デモ、モデル評価・学習前の前処理
デモ、モデル評価・学習前の処理として、画像データのsegmentation(区分け)をします。
CPUでもGPUの処理でも、ここまでは同じです。
bash create_seg_mask.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
(vitis-ai-pytorch) Vitis-AI /workspace/pt_pointpainting_nuscenes_2.5/semanticfpn > bash create_seg_mask.sh ====== Loading nuImages tables for version v1.0-train... Done loading in 0.000 seconds (lazy=True). ====== Process category information Loaded 25 category(s) in 0.000s, 100%|█████████████████████████████████████████████████████████████████████| 25/25 [00:00<00:00, 249067.93it/s] Process image meta information... Loaded 872181 sample_data(s) in 2.879s, 0%| | 0/872181 [00:00<?, ?it/s]Loaded 73755 surface_ann(s) in 1.566s, Loaded 557715 object_ann(s) in 4.061s, 100%|██████████████████████████████████████████████████████████████| 872181/872181 [2:08:44<00:00, 112.91it/s] ====== Loading nuImages tables for version v1.0-val... Done loading in 0.000 seconds (lazy=True). ====== Process category information Loaded 25 category(s) in 0.001s, 100%|█████████████████████████████████████████████████████████████████████| 25/25 [00:00<00:00, 277401.06it/s] Process image meta information... Loaded 213185 sample_data(s) in 0.810s, 0%| | 0/213185 [00:00<?, ?it/s]Loaded 17995 surface_ann(s) in 0.511s, Loaded 136074 object_ann(s) in 1.082s, 100%|████████████████████████████████████████████████████████████████| 213185/213185 [15:05<00:00, 235.49it/s] |
実行して2時間ほどで終了します。
「samples_10cls_bg_masks」のフォルダが新に出来ています。
GPUのテスト
最初に簡単な方であるGPU版をテストしていきます。
GPU版のdockerを起動して「デモ-モデル評価-モデル学習」の時間を計測しました。
1 2 |
cd Vitis-AI/ ./docker_run.sh xilinx/vitis-ai-gpu:latest |
2000枚の画像のSemantic Segmentationデモ
約2000枚の写真で領域分割のデモするのにで「27:54」でした。途中で止めています。
bash run_demo.sh
1 2 3 4 5 6 |
(vitis-ai-pytorch) Vitis-AI /workspace/pt_pointpainting_nuscenes_2.5/semanticfpn > bash run_demo.sh Namespace(backbone='resnet18', base_size=1024, batch_size=10, crop_size=512, cuda=True, data_folder='data/nuimages', dataset='nuimages', device='gpu', dump_xmodel=False, eval=False, fast_finetune=False, ignore_label=-1, model='fpn', no_cuda=False, num_classes=11, quant_dir='quantize_result', quant_mode='float', save_dir='./data/demo', scale=0.5, seed=1, test_folder='./data/nuimages/samples/CAM_FRONT', test_size=[576, 320], weight='float/semanticfpn-nuimages.pth', workers=16) /opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/torch/nn/_reduction.py:42: UserWarning: size_average and reduce args will be deprecated, please use reduction='mean' instead. warnings.warn(warning.format(ret)) ===> Visualization: 2002it [27:54, 1.20it/s] |
デモ実行後はdata\demoのファイルが出来ています。
出力画像を確認すると、色分けされて分類された結果が良く分かります。
モデルの評価(eval)
既にサンプルで用意されていたモデルの評価ですが「15:57」かかりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
(vitis-ai-pytorch) Vitis-AI /workspace/pt_pointpainting_nuscenes_2.5/semanticfpn > bash run_eval.sh Namespace(backbone='resnet18', base_size=1024, batch_size=16, crop_size=512, cuda=True, data_folder='data/nuimages', dataset='nuimages', device='gpu', dump_xmodel=False, eval=True, fast_finetune=False, ignore_label=-1, model='fpn', no_cuda=False, num_classes=11, quant_dir='quantize_result', quant_mode='float', save_dir='./data/demo_results', scale=0.5, seed=1, test_folder=None, test_size=[576, 320], weight='float/semanticfpn-nuimages.pth', workers=16) /opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/torch/nn/_reduction.py:42: UserWarning: size_average and reduce args will be deprecated, please use reduction='mean' instead. warnings.warn(warning.format(ret)) ===> Evaluation mIoU: ====== Loading nuImages tables for version v1.0-val... Loaded 12 attribute(s) in 0.000s, Loaded 464 calibrated_sensor(s) in 0.004s, Loaded 25 category(s) in 0.000s, Loaded 213185 ego_pose(s) in 1.706s, Loaded 82 log(s) in 0.001s, Loaded 136074 object_ann(s) in 1.046s, Loaded 16445 sample(s) in 0.027s, Loaded 213185 sample_data(s) in 0.885s, Loaded 6 sensor(s) in 0.000s, Loaded 17995 surface_ann(s) in 0.545s, Done loading in 4.215 seconds (lazy=False). ====== : 100%|██████████████████████████████████████████████████████████████████| 1028/1028 [15:57<00:00, 1.07it/s] Evaluation Metric: per-class IoU(%): ['99.0', '61.5', '80.5', '71.3', '59.5', '65.0', '85.2', '51.6', '75.3', '45.3', '65.8'] mean IoU(%): 69.1 |
モデルの学習(train)
Readmeに従い、プレ学習しているモデルを「resnet18-5c106cde.pth」を使います
ダウンロードしてcode/imagenet_pretrainedのフォルダ内に入れておきます。
エポック(Epoch)1回分の学習時間は「22:33」でした。1epoch後は途中で止めています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
(vitis-ai-pytorch) Vitis-AI /workspace/pt_pointpainting_nuscenes_2.5/semanticfpn > bash run_train.sh BaseDataset: base_size 576, crop_size 320, test_size (512, 256) ====== Loading nuImages tables for version v1.0-train... Loaded 12 attribute(s) in 0.000s, Loaded 2022 calibrated_sensor(s) in 0.052s, Loaded 25 category(s) in 0.000s, Loaded 872181 ego_pose(s) in 6.121s, Loaded 350 log(s) in 0.001s, Loaded 557715 object_ann(s) in 3.465s, Loaded 67279 sample(s) in 0.081s, Loaded 872181 sample_data(s) in 2.940s, Loaded 6 sensor(s) in 0.000s, Loaded 73755 surface_ann(s) in 1.431s, Done loading in 14.091 seconds (lazy=False). ====== ====== Loading nuImages tables for version v1.0-val... Loaded 12 attribute(s) in 0.000s, Loaded 464 calibrated_sensor(s) in 0.006s, Loaded 25 category(s) in 0.000s, Loaded 213185 ego_pose(s) in 1.043s, Loaded 82 log(s) in 0.000s, Loaded 136074 object_ann(s) in 0.869s, Loaded 16445 sample(s) in 0.019s, Loaded 213185 sample_data(s) in 0.618s, Loaded 6 sensor(s) in 0.000s, Loaded 17995 surface_ann(s) in 0.248s, Done loading in 2.804 seconds (lazy=False). ====== /opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/torch/utils/data/dataloader.py:481: UserWarning: This DataLoader will create 16 worker processes in total. Our suggested max number of worker in current system is 4, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary. cpuset_checked)) loading pretrained weights of resnet18 from ./code/imagenet_pretrained/resnet18-5c106cde.pth Using poly LR Scheduler! 0%| | 0/4204 [00:00<?, ?it/s] =>Epoches 0, learning rate = 0.0000, previous best = 0.0000 Train loss: 1.732: 100%|██████████████████████████████████████████████████| 4204/4204 [22:33<00:00, 3.11it/s] |
GPU環境で実行したコマンド・内容
GPU版のdocker環境で実行したコマンドは下記です。
1 2 3 4 5 6 7 8 9 |
(vitis-ai-pytorch) Vitis-AI /workspace/pt_pointpainting_nuscenes_2.5/semanticfpn > history 1 conda activate vitis-ai-pytorch 2 cd pt_pointpainting_nuscenes_2.5/ 3 cd semanticfpn/ 4 pip install --user -r requirements.txt 5 bash create_seg_mask.sh 6 bash run_demo.sh 7 bash run_eval.sh 8 bash run_train.sh |
CPUのテスト
CPU版のdockerを起動して「デモ-モデル評価-モデル学習」の時間を計測しました。
1 2 |
cd Vitis-AI/ ./docker_run.sh xilinx/vitis-ai-cpu:latest |
2000枚の画像のSemantic Segmentationデモ
GPU版と同様にデモのスクリプト(bash run_demo.sh)を実行するとエラーが出ます。
cudaを使う設定になっており、初期化が出来ないよという内容でした。
File "/opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/torch/cuda/__init__.py", line 208, in _lazy_init
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
(vitis-ai-pytorch) Vitis-AI /workspace/pt_pointpainting_nuscenes_2.5/semanticfpn > bash run_demo.sh Namespace(backbone='resnet18', base_size=1024, batch_size=10, crop_size=512, cuda=False, data_folder='data/nuimages', dataset='nuimages', device='gpu', dump_xmodel=False, eval=False, fast_finetune=False, ignore_label=-1, model='fpn', no_cuda=False, num_classes=11, quant_dir='quantize_result', quant_mode='float', save_dir='./data/demo', scale=0.5, seed=1, test_folder='./data/nuimages/samples/CAM_FRONT', test_size=[576, 320], weight='float/semanticfpn-nuimages.pth', workers=16) Traceback (most recent call last): File "code/test/test.py", line 266, in <module> main(args) File "code/test/test.py", line 219, in main model = build_model(args, device) File "code/test/test.py", line 121, in build_model model = fpn.get_fpn(nclass=args.num_classes, backbone=args.backbone, pretrained=False).to(device) File "/opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 899, in to return self._apply(convert) File "/opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 570, in _apply module._apply(fn) File "/opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 570, in _apply module._apply(fn) File "/opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 593, in _apply param_applied = fn(param) File "/opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 897, in convert return t.to(device, dtype if t.is_floating_point() or t.is_complex() else None, non_blocking) File "/opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/torch/cuda/__init__.py", line 208, in _lazy_init |
実行プログラムのtest.pyを確認すると、オプションでcudaかcpuを選べるようでした。
スクリプトを修正して、--device cpu を最後に追加して実行できました。
結果は「53:47」でした。
1 2 3 4 5 6 |
(vitis-ai-pytorch) Vitis-AI /workspace/pt_pointpainting_nuscenes_2.5/semanticfpn > bash run_demo.sh Namespace(backbone='resnet18', base_size=1024, batch_size=10, crop_size=512, cuda=False, data_folder='data/nuimages', dataset='nuimages', device='cpu', dump_xmodel=False, eval=False, fast_finetune=False, ignore_label=-1, model='fpn', no_cuda=False, num_classes=11, quant_dir='quantize_result', quant_mode='float', save_dir='./data/demo', scale=0.5, seed=1, test_folder='./data/nuimages/samples/CAM_FRONT', test_size=[576, 320], weight='float/semanticfpn-nuimages.pth', workers=16) /opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/torch/nn/_reduction.py:42: UserWarning: size_average and reduce args will be deprecated, please use reduction='mean' instead. warnings.warn(warning.format(ret)) ===> Visualization: 2001it [53:47, 1.61s/it] |
モデルの評価(eval)
評価のスクリプト(bash run_eval.sh)でも、デモと同じプログラム(test.py)が使われていました。
同様にスクリプトを修正して、--device cpu を最後に追加して実行できました。
CPUだと遅すぎるので、換算時間で確認しています。「3:56:43」でした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
(vitis-ai-pytorch) Vitis-AI /workspace/pt_pointpainting_nuscenes_2.5/semanticfpn > bash run_eval.sh Namespace(backbone='resnet18', base_size=1024, batch_size=16, crop_size=512, cuda=False, data_folder='data/nuimages', dataset='nuimages', device='cpu', dump_xmodel=False, eval=True, fast_finetune=False, ignore_label=-1, model='fpn', no_cuda=False, num_classes=11, quant_dir='quantize_result', quant_mode='float', save_dir='./data/demo_results', scale=0.5, seed=1, test_folder=None, test_size=[576, 320], weight='float/semanticfpn-nuimages.pth', workers=16) /opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/torch/nn/_reduction.py:42: UserWarning: size_average and reduce args will be deprecated, please use reduction='mean' instead. warnings.warn(warning.format(ret)) ===> Evaluation mIoU: ====== Loading nuImages tables for version v1.0-val... Loaded 12 attribute(s) in 0.001s, Loaded 464 calibrated_sensor(s) in 0.003s, Loaded 25 category(s) in 0.000s, Loaded 213185 ego_pose(s) in 1.697s, Loaded 82 log(s) in 0.001s, Loaded 136074 object_ann(s) in 1.033s, Loaded 16445 sample(s) in 0.026s, Loaded 213185 sample_data(s) in 0.885s, Loaded 6 sensor(s) in 0.001s, Loaded 17995 surface_ann(s) in 0.552s, Done loading in 4.202 seconds (lazy=False). ====== : 1%|▉ | 10/1028 [02:19<3:56:43, 13.95s/it] |
モデルの学習(train)
学習のスクリプト(bash run_train.sh)の中身を見て、実行プログラム(train.py)を確認しました。
--device cpuなどのオプション設定は用意されていませんでした。
そのまま実行するとエラーが発生しました。CUDA環境が設定されていない旨でした。
AssertionError: Torch not compiled with CUDA enabled
1 2 3 4 5 6 7 8 9 10 |
(vitis-ai-pytorch) Vitis-AI /workspace/pt_pointpainting_nuscenes_2.5/semanticfpn > bash run_train.sh ~~~~~~~~~~~ Traceback (most recent call last): File "code/train/train.py", line 208, in <module> trainer.training(epoch) File "code/train/train.py", line 136, in training image = image.cuda() File "/opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/torch/cuda/__init__.py", line 208, in _lazy_init raise AssertionError("Torch not compiled with CUDA enabled") AssertionError: Torch not compiled with CUDA enabled |
学習の実行プログラム(train.py)を確認して、エラー出ていたCUDA箇所をCPUに修正しました。
image = image.cuda() → image = image.cpu()
target = target.cuda() → target = target.cpu()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def training(self, epoch): train_loss = 0.0 self.model.train() tbar = tqdm(self.trainloader) for i, (image, target) in enumerate(tbar): self.scheduler(self.optimizer, i, epoch, self.best_pred) self.optimizer.zero_grad() if torch_ver == "0.3": image = Variable(image) target = Variable(target) # image = image.cuda() # target = target.cuda() image = image.cpu() target = target.cpu() |
上記修正後は学習のスクリプト実行できました。
CPUだと遅すぎるので、換算時間で確認しています。「6:33:04」でした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
(vitis-ai-pytorch) Vitis-AI /workspace/pt_pointpainting_nuscenes_2.5/semanticfpn > bash run_train.sh BaseDataset: base_size 576, crop_size 320, test_size (512, 256) ====== Loading nuImages tables for version v1.0-train... Loaded 12 attribute(s) in 0.000s, Loaded 2022 calibrated_sensor(s) in 0.014s, Loaded 25 category(s) in 0.000s, Loaded 872181 ego_pose(s) in 5.711s, Loaded 350 log(s) in 0.001s, Loaded 557715 object_ann(s) in 3.947s, Loaded 67279 sample(s) in 0.081s, Loaded 872181 sample_data(s) in 2.862s, Loaded 6 sensor(s) in 0.000s, Loaded 73755 surface_ann(s) in 1.396s, Done loading in 14.013 seconds (lazy=False). ====== ====== Loading nuImages tables for version v1.0-val... Loaded 12 attribute(s) in 0.000s, Loaded 464 calibrated_sensor(s) in 0.006s, Loaded 25 category(s) in 0.000s, Loaded 213185 ego_pose(s) in 0.890s, Loaded 82 log(s) in 0.000s, Loaded 136074 object_ann(s) in 0.686s, Loaded 16445 sample(s) in 0.019s, Loaded 213185 sample_data(s) in 0.605s, Loaded 6 sensor(s) in 0.000s, Loaded 17995 surface_ann(s) in 0.252s, Done loading in 2.459 seconds (lazy=False). ====== /opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/torch/utils/data/dataloader.py:481: UserWarning: This DataLoader will create 16 worker processes in total. Our suggested max number of worker in current system is 4, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary. cpuset_checked)) loading pretrained weights of resnet18 from ./code/imagenet_pretrained/resnet18-5c106cde.pth Using poly LR Scheduler! 0%| | 0/4204 [00:00<?, ?it/s] =>Epoches 0, learning rate = 0.0000, previous best = 0.0000 Train loss: 3.650: 0%|▏ | 10/4204 [01:01<6:33:04, 5.62s/it] |
CPU環境で実行したコマンド・内容
CPU版のdocker環境で実行したコマンドは下記です。
1 2 3 4 5 6 7 8 9 |
(vitis-ai-pytorch) Vitis-AI /workspace/pt_pointpainting_nuscenes_2.5/semanticfpn > history 1 conda activate vitis-ai-pytorch 2 cd pt_pointpainting_nuscenes_2.5/ 3 cd semanticfpn/ 4 pip install --user -r requirements.txt 5 bash create_seg_mask.sh 6 bash run_demo.sh ←エラー発生のため、プログラム(test.py)を見てスクリプトを修正 7 bash run_eval.sh ←エラー発生のため、プログラム(test.py)を見てスクリプトを修正 8 bash run_train.sh ←エラー発生のため、プログラム(train.py)を見てプログラムを修正 |
まとめ
簡単な機械学習をして、CPUとGPUの差を比較してみました。
やはりGPUの方が圧倒的に楽です。CPUだと処理速度・サポートが厳しい場合が多いです。
もし機械学習を始める方がいれば、GPU環境を整えることをおススメします。
市販のデスクトップPCにGPUを搭載した内容を下記記事で紹介しています。
また機械学習用にGPUメモリが多いグラボで、PC自作した内容も紹介しています。
機械学習のPCを自作してみた!(パーツ予算15~20万円編)
コメント