D_ontory : 개발스토리

[paddleOCR] paddleOCR fine-tuning gpu error ValueError: substring not found 본문

Project/OCR

[paddleOCR] paddleOCR fine-tuning gpu error ValueError: substring not found

D_on 2024. 5. 29. 14:05
반응형

paddleocr 을 사용하여 한국어 ocr  finetuning 학습을 진행하려 한다.

multi-gpu 사용하여 학습 진행할 예정이었는데, 내가 사용할 gpu는 2,3번 gpu 였다.

애초에 docker container 생성할 때도 (nvidia-docker container 사용) 사용 gpu를 2,3으로 제한해두었는데 학습을 진행하려고하니 gpu 관련 오류가 떴다.

 

paddleOCR fine-tuning gpu error  ValueError: substring not found

 

최종적으로는 gpu 오류가 맞았고,

해당 컨테이너에서 nvidia-smi 를 통해 gpu 번호를 확인해 보았다.

 

 

 

총 4개의 gpu 중 2,3을 사용 gpu로 가지고왔는데 컨테이너 내에서 nvidia-smi 로 확인해보니 0,1 로 뜬다.

나는 이걸 나중에 알아차렸고, paddlepaddle-gpu 버전이 설치가 되어야 한다는 것을 알았다.

 

Error 해결

paddlepaddle 전용 도커 컨테이너가 있길래 그 컨테이너로 새롭게 컨테이너를 생성하여 학습에 성공했다.

<최신 버전 paddle 전용 도커 컨테이너>

docker pull paddlepaddle/paddle:2.6.1-gpu-cuda12.0-cudnn8.9-trt8.6

 

paddlepaddle gpu 사용하려면 cuda 와 cudnn 버전이 paddle 버전과 잘 맞아야 하기 때문에 애초에 잘 맞춰져서 있는 도커 이미지를 사용하여 컨테이너를 생성하는것이 훨씬 효율적인 것 같다.


(이상한 라이브러리 버전 맞추기를 안해도 된다.)

 

Paddle docker 컨테이너 생성
docker run --gpus all -it --shm-size=64G -v /etc/localtime:/etc/localtime -v /home/workspace/:/workspace(볼륨연결)/ --name name paddlepaddle/paddle:2.6.1-gpu-cuda12.0-cudnn8.9-trt8.6

 

이번에는 그냥 --gpus all 로 컨테이너를 만들어서 train 코드 실행할때 gpu를 제한하기로 했다.

 

 

학습 Train Bash 
CUDA_VISIBLE_DEVICES=2,3 python -m paddle.distributed.launch --gpus '2,3' ./tools/train.py -c /workspace/PaddleOCR/pretrain_models/korean_PP-OCRv3_rec_train/config.yml -o Global.pretrained_model=/workspace/PaddleOCR/pretrain_models/korean_PP-OCRv3_rec_train/best_accuracy Global.save_inference_dir=/workspace/PaddleOCR/inference/

해당 명령어로 학습 성공!

 

 

 

 

 

반응형
Comments