yolov8を学科サーバーで使う.
2024/08/06 noka.icon
学科サーバーのスペックを確認する
code:terminal
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.256.02 Driver Version: 470.256.02 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| 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 V100S-PCI... Off | 00000000:3B:00.0 Off | 0 |
| N/A 37C P0 37W / 250W | 0MiB / 32510MiB | 2% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
yolov8で必要な最低限のスペックは?公式より↓らしい Pip install the ultralytics package including all requirements in a Python>=3.8 environment with PyTorch>=1.8.
まずultralyticsをインストールできるような環境を作ろう.
なる先生の記事からfagging faceのdocerfileを基に書き換えれば良さそうなので,以下のdefファイルを作る
code:env.def
Bootstrap: docker
From: huggingface/transformers-pytorch-gpu
%post
apt-get update && apt-get install -y python3-pip
pip3 uninstall --yes torch torchaudio torchvision
pip3 install torch==2.0.1 torchaudio torchvision
defファイルをbuildする.(結構時間かかる)
code:terminla
singularity build --fakeroot env.sif env.def
slurmに投げるまに,作った環境でgpuが使えるか,学習ができそうか確認する.
defファイル内でpip install ultralyticsしてない.環境に入ってからするか
Requirement already satisfied:がめっちゃ出る.すでにはいってる?
code:terminal
singularity shell env.sif
Singularity> python3
Python 3.8.10 (default, Jul 29 2024, 17:02:10)
Type "help", "copyright", "credits" or "license" for more information.
>> import ultralytics
>>
とりあえず適当に学習してみる
single GPUなら特に指定しなくても使えたら使うらしい.
code:train.py
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
学習が始まった.行けそうなので,これをslurmになげるようにbatchファイルを書く.
logsディレクトリを作っておく.
code:train.sbatch
date
singularity exec --nv env.sif python3 train.py
date
無事に終わると
Results saved to runs/detect/trainとか出る.
ログを見るとTue Aug 6 18:05:30 JST 2024とTue Aug 6 18:07:18 JST 2024の2分間で学習が終わってる.
~/.config/Ultralytics/settings.yamlファイルのdatasets_dirからの相対パスをdata=にわたすようにtrain.pyを書き換える.(←間違いかも)
code:train.py
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="datasets/data.yaml", epochs=100, imgsz=640)
ジョブ投下する.
Job の投入
code:terminal
sbatch anpan.sbatch
Job の確認
code:terminal
squeue