windows환경에서의 강화학습에는 몇가지 문제점이 있습니다. 일단 NCCL이 적용되지 않습니다. NCCL이란 (저도 자세히는 몰라서...)NCCL The NVIDIA Collective Communication Library (NCCL). Nvidia 자원을 모두 연결하여 사용할 수 있는 기능을 말하는 것 같습니다. 일단, 현재 모듈을 돌리면 warning 정도의 에러가 잠깐 떠다가 사라집니다. 그래서 방법을 찾아 봤지만 결국 현재는 NCCL지원 불가 향후(언제 인지 공식적 언급없음) 지원 예정 그러면서 링크는 있어서 열심히 찾아 가면 속았지롱 입니다. 그런데 모자란 영어 열심히 읽어보면 wsl(ubuntu 20.04)이런 링크가 보입니다. 그래서 wsl 뭐냐? 끝에 l은 linux의 그 l이 맞습니다. 마이크로 소프트(이하 마소)는 이전까지는 철저히 win nt커널을 지키자 주의 였습니다. 유닉스는 이미 빗장을 열고 백기투항한 상태였죠. 그런데 최근에 사정이 좀 달라졌습니다. azure 클라우드 때문이죠 지금은 사실 마소를 먹여 살리는것이 windows도 office도 아니거든요. 클라우드 환경에서 windows는 너무 불편한 덩어리입니다. docker같은 툴도 적용이 쉽지 않고 터미널 프로그램을 실행해서 windows app를 다루는 것은 정말 어려운 일이죠. 그래서 gnu license 의 내용을 알고도 wsl을 도입합니다. 제가 알기로 마소는 이미 오래전에 nt커널을 공개했고 wsl은 그 산물인 거죠. 결론을 말씀드리면 저희 강화학습 소스를 한줄도 바꾸지 않고 wsl에 올렸을 때 성능이 두배정도 빨라 졌습니다. 그리고 이제 더이상 NCCL오류는 나타나지 않습니다. NCCL을 완벽히 지원하거든요. https://www.lainyzine.com/ko/article/how-to-install-wsl2-and-use-linux-on-windows-10/#dism%EC%9C%BC%EB%A1%9C-wsl-%EA%B4%80%EB%A0%A8-%EA%B8%B0%EB%8A%A5-%ED%99%9C%EC%84%A4%ED%99%94 을 참조하시면 wsl설치 관련글이 있으나 다 무시하시고 ms store에 가면 ubuntu lts버젼을 설치하시면 됩니다. 그럼 20.04버젼이 설치 됩니다. 22.04버젼도 있지만 아직 안정화버젼은 아닙니다. 뭐 그래도 크게 상관 이 없는 것 같습니다. root암호를 지정해야 하는데 어차피 외부에서 해킹은 불가능하므로 괜히 어렵게 만들필요는 없습니다. wsl은 별도의 네트워크를 생성하고 windows와 NAT통신을 합니다. 즉 windows 터미널(파워셀 또는 도스셀)에서만 접속가능합니다. 그러면서 windows의 하드웨어를 공유합니다. 설치는 즉시 이루어지면 시작화면에 자동으로 실행아이콘이 만들어집니다. 실행이 되면 녹색과 회색이 섞인 까만 터미널화면이 떱니다. 자 이제 root셀로 가 볼까요? 'sudo su -'를 입력합니다. root password를 입력합니다. ubuntu root에 접속 되면 'apt update'실행합니다. apt의 repository를 업데이트하는 건데 windows 업데이트 검사와 같다고 보면 됩니다. 그리고 'apt upgrade'를 실행하면 최근 커널 파일을 업데이트합니다. nvidia download center로 가면 cuda다운로드 페이지가 있습니다. 젤위에서 부터 선택을 하다보면 맨마지막에 ubuntu 20.04(wsl)이 보입니다. click하면 명령어 리스트가 보입니다. 위에서 부터 한줄씩 copy해서 붙여 넣으면 됩니다. 이 때 주의할 것은 root셀로 설치할 경우 권한 문제가 발생할 수 있으니 유저셀로 이동해서 설치합니다. 설치가 끝났다면 nvcc --version을 실행해서 설치된 cuda version을 확인합니다. 이제 파이선을 설치합니다 사실 이미 파이션은 설치가 되어 있습니다. 파이션의 버전을 확인하여 우리가 사용할 버젼보다 너무 높은 건 아닌지 확인이 필요합니다. sudo apt install python37 이렇게 입력하면 python 3.7버젼이 설치 됩니다. 현재 파이션은 3.11까지 나와있지만 호환성을 위해 너무 최신 버젼을 사용하는 것은 자제해야 합니다. pytorch나 tensoflow는 아직 그기 까지는 가지 못 했습니다.
https://goyunji.tistory.com/m/7
위페이지를 참조하여 update-alternative를 조정합니다. torch와 torchvision을 설치합니다. conda install pytorch torchvision -c "cuda버젼"을 하면 자동으로 torch가 cuda버젼에 맞추어 설치가 됩니다. 다시 nvidia 로 가서 이번에는 NCCL을 설치합니다 설치방법은 CUDA설치와 동일합니다. 위에서 스무고개하듯이 click하다보면 마지막에 ubuntu 20.04(wsl)클릭하면 파일이 다운되는게 아니라 명령어가 화면에 나옵니다. 그대로 실행만 하면 설치 완료. 이제 최상위 난이도의 ta-lib설치 입니다. conda install ta-lib를 실행하면 설치는 되지만 beautiful soap에서 커서가 멈출겁니다 안 멈추고 지나가면 개이득. ctrl+c를 눌러서 종료한다음 python3 -m pip install ta-lib -U를 실행해서 설치에 성공하신다면 당신은 신의 아들로 추앙합니다. 이거 마저 실패한다면 ta-lib 홈피로 가서 ubuntu용 ta-lib.tar.gz파일을 받아서 압축을 풀고
cd ta-lib
configure.sh
make
sudo make install
실행합니다. 여기서도 실패한다면 conda로 다시 돌아가서 처음부터 다시하시면 100% 되실겁니다. 여기서 안되시는 분은 똥손이므로 프로그래머의 길을 잠시 고려해보시기 바랍니다. 나머지는 프로그램 실행시 pip로 충분히 설치 가능합니다. user 디렉토리 및에 src/rl_exam/ta-rl로 디렉토리를 만듭니다. 저는 vs code를 사용하고 있습니다. remote wsl모듈이 있으므로 설치합니다. 왼쪽 사이드 툴바에 보시면 remote wsl버튼이 생겼을 겁니다. 접속하여 작업디렉토리를 아까 생성한 디렉토리에 생성합니다. vs code창을 하나 더 열어서 기존 소스와 생성된 모든 디렉토리를 copy해서 wsl 작업 폴드로 붙여넣습니다. 자 이제 위쪽 메뉴에 터미널 을 선택하거나 보통은 터미날이 하나 정도 열려있으니 미리 만든 작업 디렉토리로 이동하여 main_buroto.py를 실행합니다. 실행하면 여러 모듈이 import는 되어 있지만 설치는 되어 있지 않다는 오류가 떱니다. pip로 하나씩 설치 해주면 됩니다. 이래서 실행되시는 분들은 성능이 향상된 강화학습 매매프로그램을 보시게 될겁니다. 설치가 안되시는 분들은 부담없이 댓글 달아 주세요. dqn실행시간도 제기준으로 9초에서 3.2초 정도로 줄었습니다. 딕덱션도 2.1초로 절반 이상 줄었습니다.
'python > 자동매매 프로그램' 카테고리의 다른 글
강화학습을 이용한 비트코인 매매프로그램(10) - CNN+RNN 모델 확장 (0) | 2022.12.21 |
---|---|
강화학습을 이용한 비트코인 매매프로그램(9) - CNN+RNN 모델 (0) | 2022.12.20 |
강화학습을 이용한 비트코인 매매프로그램(6)-Buroto Force학습 (17) | 2022.12.04 |
강화학습을 이용한 비트코인 매매프로그램(5)-데이터에 Min/Max 추가하기 (0) | 2022.11.30 |
강화학습을 이용한 비트코인 매매프로그램(4)-LSTM의 주가분석 문제점 (1) | 2022.11.30 |