train(data = data, epochs = 100, workers=<사양에 맞게 ex) 0>)
yolo train data=data epochs=100 workers=0
본문
인공지능을 학습할려는데 보통 윈도우로 학습하는데.. 왜 사람들이 리눅스로 학습하는지 알고 싶어서 WSL를 설치해서 CUDA 연결하고 리눅스로 YOLO를 학습 시켜보았다. 다른 학생 프로젝트 때문에
그런데 학습 시키는 과정에서 아래와 같은 오류가 발생했다.
CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.
이 오류를 보면 CUDA_LAUNCH_BLOCKING 이거를 1로 활성화 시켜서 디버깅을 해보라고 되어있는데.. 저걸 하면 자세히 오류가 뜨기는 뜬다.. 근데 자세히 뜨기는 떠도 그냥 메모리가 모잘르다는 것 같았다.
(CUDA_LAUNCH_BLOCKING이거.. CUDA끄고 실행하는 것 같은데.. 저것 때문에 학습 속도가 엄청 느려져서.. 오류 뜰때까지 기다리는게 으음..)
근데 전혀 모잘르지는 않았다. 램을 많이 쓰는 것 같지만 램이 최대까지 쓰는걸 보지는 못했고 70%정도 까지만 쓰는걸로 확인이 되어서 이 문제는 아닌 것 같아서.. 여러 해결 방법을 보긴 했다.
어디서는 리눅스에 뭔가 제한이 걸려 있어서 .wslconfig로 제한을 풀거나 하는 시도로 해결했다라는 글도 보고
그냥 WSL 포기하고 리눅스로 해서 해결했다는 글도 있고..
근데 나는 wslconfig도 안되고 리눅스로 바꾸는 것도 할 수가 없다.
그러다가 어디선가 workers를 0으로 해보라는 글이 있어서 해봤는데.. 정상적으로 돌아갔다.
대충 workers의 역할이 데이터를 로드 시키면서 여러 작업들의 속도를 병렬로 처리할 수 있게 하는 것 같은데 그 뒤에 숫자는 병렬 처리하는 갯수인 걸로 짐작하긴 했는데..
학교에서 SCARA 로봇이나 다른 동아리 팀원들의 프로젝트를 제작하기 위해 나의 3D 프린터 1개로는 부족해서
학교에서 쓰지도 않는 방치된 3D 프린터를 교실 내에선 쓸 수 없으니깐 다른 곳에 배치해서 쓰든 어떻게든 쓰고 싶다 했었다.
그런데.. 내가 계속 부탁을 하자.. 설치할 곳이 마땅히 없던지라.. 갑자기 "너희 집에 갔다 놓는건 어때?"라 하시더니.. 다른 선생님도 그러는게 좋다면서.. 갑자기 여러 말을 하시더니.. 어느 순간 선생님의 차를 타고 3D 프린터를 가져와버렸다..
학교에서 집까지 45분 거리인데도.. 심지어 선생님은 반대편 방향인데도.. 선생님은 동아리 팀장이기도 하고 여러 도움을 줬으니 상관없다면서 데려다 주셨는데.. 감사합니다. 선생님..
그렇게 가져와보니..
이렇게 진짜로 3D 프린터를 가져와버렸다..
3D 프린터 종류는 MakerBot Replicator 5th Generation로 굉장히 비싸고, 내가 어릴 때 진짜 써보고 싶었던 프린터 중 하나였다. (Ultimaker도 써보고 싶다..)
진짜 꿈만 같던 3D 프린터를 가져와서 쓸 수 있게 되어서 굉장히 신비하고 행복한 기분이었다.
근데 쓰는 방법을 모르는지라 여러번 유튜브를 찾아보기도 하면서 했는데.. 굉장히 특이한 점은 헤더에 필라멘트 튜브를 끼우는 줄 알고 계속 찾아봤었는데.. 결국 아니였었다.. 헤더에서 필라멘트를 끌어당겨서 필요가 없었다.. (엄청 좋네..)
일단 그렇게 켜서 여러가지 모드도 확인해보고 계정도 연결하고 있었다. 근데 이상하게 내가 예전에 관심이 있던지라 계정이 만들어져 있었다. ㅋㅋㅋ
근데 가장 큰 문제점은 이게 학교에 방치되어있다 보니.. 필라멘트를 엄청 많이 사셨던데.. 모두 오래 안쓰다 보니 습기가 굉장히 많이 차 있었다. 그래서 어떻게 쓰지 하다가.. 내가 가지고 있는 것 중에 필라멘트 건조기도 있었는데.. 하하하 필라멘트 스풀이 너무 커서 안들어가는..
그래서 그냥 포기하고 일단 1~2일 동안 필라멘트 보관팩에 넣고 실리카겔로 건조 시켰다. (뭐.. 소용은 없었지만..)
근데 진짜 신기한 점은 분명 필라멘트가 습기가 차 있는데도 하나에 5만원 짜리이라서 그런지 거미줄도 하나도 안생기고 엄청 잘 출력이 되었다..
굉장히 놀라웠다.. 이게 비싼 프린터인건가.. 더 신기한 점은 이거가 0.4mm 노즐인걸로 아는데 그것보다 더 높게 바닥을 채우는게 보였다.. 그래서 깨달은건 이 프린터는 출력 두께를 조절하면서 엄청 빠르게 출력할 수 있다는걸 알았다.. (실제로도 그랬었다.. 내 프린터 기준으로 24시간 이상이 걸리는걸 18시간 만에 출력을 했으니..)
그리고 3D 프린터를 와이파이하고 연결하니 온라인에서도 3D 프린터를 사용할 수 있는건 진짜 좋은 점이었다.
근데 최대 단점은 일단 빌드 플레이트가 히팅 베드가 아니기도 하고 종이 테이프가 붙어 있다보니..(종이 테이프에선 잘 안떨어짐) 기본적으로 라프트를 생성하고 그 위에 하다 보니 필라멘트가 굉장히 낭비 되기도 하고 불필요한 시간이 걸렸었다.. 뭐 난 상관없지만 좀 큰 단점이었다.
그리고 소리도 굉장히 시끄러웠다. 내 프린터는 팬 소리만 나고 모터소리는 하나도 안나는데 이건 진짜 큰 소리로 노래를 불르는 것 처럼 나다 보니.. 모터가 움직이면서 진짜 음정도 나타나고 한.. 20m 떨어져 있는 곳에서 방문을 닫아도 소리가 날 정도 였다.. 뭐 그래도.. 빨르니 상관은 없지만..
근데 굉장히 특이한 점은 아까 습기가 있어도 잘 된다 했었는데.. 특이한 점은 내 3D 프린터에 그 필라멘트를 쓰니 거미줄이 왕창 생기고 출력도 잘 안된다는.. 진짜 신기하긴 했다..
아 근데 제일 큰 단점은 슬라이서인데.. 슬라이서가 큐라보다 굉장히 느리고 렉이 엄청 걸렸다.. 서포터도 생성을 잘 못하고..
그래서 난 결심했다. 그냥 Makerbot 프린터는 어른 되도 구매하지 않기로.. 뱀부랩이나 사고 싶다..
그렇게 일주일 이상을 출력해서 모든 부품을 출력했다. 나머지로 추가 부품은 내 프린터로 출력할 수 있는 정도라 2023-05-25에 빌리고 2023-06-16에 반납하기로 했다.
정리
장점 : 온라인 출력 가능, 빠른 출력, 단순한 UI, 필라멘트
단점 : 소리 엄청 시끄러움, 히팅 베드가 없어 라프트 무조건 출력, 라프트로 바닥면이 고르지 못함, 슬라이서 진짜 별로..