본문 바로가기
무모한 도전-주식 인공지능 만들기

드디어 성공한 구글 코랩(google colab)의 사용

by 인터넷떠돌이 2018. 12. 21.
반응형

안녕하세요?


지난번 포스팅에서 올렸는 exe작전의 실패로 인해서 한 1분 정도 좌절을 하고 나서, 다음으로 PyQt5때문에 무언가 엉켜있는 것이 아닌가 하는 생각이 들었기 때문에, 이를 제거하면 된다고 일단 생각을 했습니다. 그래서 이번 포스팅에서는 아예 강화학습을 해서 모델 파일만을 만드는 작업을 하기 위한 파이썬 스크립트 파일을 수정하고, 이를 이용해서 한번 작업에 들어간 내용을 올려 보고자 합니다.



PyCharm에서 새로운 프로젝트로 그냥 되는대로 이름을 붙인 YellowOperation이라고 하는 프로젝트를 생성하도록 합니다. 이름에 대해서는 진짜로 아무런 의미나 생각없이 지었습니다.



일단 한번 간단한 테스트로, 기존의 RLTrader의 파일이 남아 있을 때, 혹시 UI파일을 제대로 가져오지 못해서 프로그램이 실행이 안되는 것이 아닌가 하는 생각이 들어서 위 스크린샷과 같이 일련의 프로그램을 짜고서 한번 시도에는 들어가 봤습니다.



그런데 요구하는 mpl_finance 모듈까지 설치하고 나서도, 제대로 작동이 되지 않는 것을 볼 수 있었습니다. 이처럼 같은 에러를 도저히 해결할 방법이 없었기 때문에, 하는 수 없이 기존에 하던 작전은 계속해서 해 보도록 합니다.



먼저 위 스크린샷과 같이 RLTrader의 main.py를 손을 보도록 합니다. 간단하게 기존에 있던 많은 부분을 제거하고, 상당수는 제가 유저 인터페이스를 만들면서 까지 만든 코드도 일부 가져오도록 했습니다.



일단 기존에 있던 기간 필터링은 별 의미가 없어서 그냥 제거 하도록 했으며-왜냐하면 data_manager.py에서 이전 포스팅에서 보여준 것과 같이 cutting_point를 일일히 코드상에서 수동으로 지정해 주는 것으로 어떻게 대체하도록 했습니다. 그리고 이전에는 csv파일을 읽어 들였다면, 여기서는 데이터 베이스 파일을 읽어 들이는 것으로 바뀌었고, 여기서는 이미 column의 이름이 있기 때문에, 따로 이름을 붙이는 명령어는 생략했습니다.



그리고 data_manager.py에 가서는 위 스크린샷처럼 진짜로 아까 말했다 시피 바꾸어 주도록 합니다. 그리고 여기다가 tableName과 cutting_Point라고 하는 항목들을 지정해 주는 것으로 main.py에서 지정한 값들이 넘어갈 수 있도록 만들어 줍니다.




일단 PyCharm상에서는 그냥 10에포크만 가지고서 강화학습을 일으키도록 합니다. 시간은 고작 17초만 걸린 것으로 나오는 간단한 작업이기는 했습니다만, 이게 1000에포크씩 가면 제 노트북의 성능으로는 6시간 30분이 걸리는 결과가 나오는 것 입니다.



이제 방금전에 작동이 확인된 RLTrader의 수정된 버젼의 파일들을 구글 드라이브에 올려 보도록 합니다. 당연히 이전에 있던 파일들은 모두 휴지통으로 보냈으며, 이 파일들을 올리는 것 까지는 좋았습니다.



문제는 여기서도 아니나 다를까 무슨 에러가 나오는데, 자세히 보면 C locale이 가능하지 않다는 말이 나오는데, 일단 저로서는 이 에러가 단순히 파이썬이 아니라 일종의 운영체제와 연동이 되어 있는 에러라는 것만 알 수 있었습니다.



일단 인코딩이 문제라고 들었는데, 다행히 settingsl.py에 가면, 위 스크린샷과 같이 로케일 설정이 있는 것을 볼 수 있었습니다. 그래서 위 스크린샷과 같이 먼저 바꾸어 주었습니다.



그래도 에러나 나왔는데, 그 이유인즉, 자세히 보면 플렛폼에 따른 설정이라고 합니다. 즉, 구글 코랩은 리눅스를 사용해서 서버를 구축했다고 합니다. 그래서 else: 항목에 이렇게 지정을 하도록 합니다.



그런데도 에러가 났고, 이게 무슨 일인가 싶어서 한번 !locale -a라고 해서 콘솔창에서 locale -a를 실행시킨 결과, 여기서 지원이 되는 인코딩의 종류가 나오는 것을 확인할 수 있었습니다. 종류는 크게 4가지로 나오는 것을 볼 수 있었으며, 여기서 저는 3번째 항목을 그냥 골랐습니다.




이번에는 위 스크린샷과 같이 리눅스일 경우에는 'en_US.utf8'이라는 항목으로 만들어 주도록 했습니다. 이건 구글 코랩의 서버에서 지원을 해 줄것을 기대하면서 한번 넣어 보도록 했습니다.



이번에야 말로 제대로 강화학습이 시작되는 것을 볼 수 있었습니다! 일단 환경은 지난번 포스팅에서 보여드린 바와 같이 GPU로 설정을 해 주었으며, 제대로 학습이 시작되어서 끝나기를 기다리고 있었습니다.



그런데 마지막에 가서, 폴더를 생성하지 못해서 일종의 에러를 내는 것을 볼 수 있었습니다. 코드를 바꾸어 주면 될것 같기도 하지만, 일단 제 경우에는 미리미리 폴더를 생성해서 문제를 해결하고자 했습니다.



그래서 새벽에 일어나서 작업한 내용물을 날리고, 일단 위 스크린샷과 같이 폴더를 만들어 주도록 했습니다. 여기서 이전에 본 책에서 왜 저자가 \와 /를 헷갈려 했는지 나올만 한게, 윈도우 환경에서 PyCharm으로 작업을 하는 경우와, jupyter notebook을 사용하는 경우에는 서로 달리 하는데-특히 윈도우와 리눅스를 사용한다는 점에서 정말 자주 둘을 사용하다 보면 헷갈릴 만도 하겠다는 생각이 듭니다.



이번에야 말로 GPU를.... 그것도 구글의 서버에 장착되어 있는 정말 좋은 GPU를 사용해서 정말 빠른 시간 안에 모델을 얻는데 성공하기는 했습니다. 물론 2시간 43분도 오래 걸린 것이라면 오래 걸린 것이 맞는데, 그래도 제 컴퓨터에서 CPU만 써서 6시간 반이 걸린 것에 비하면 정말 빠른 발전이기는 합니다.



그리고 마지막으로 구글 드라이브의 제 계정에서 모델 파일이 생성이 된 것을 확인할 수 있었습니다. 이렇게 하는 것으로 이제 작업이 일단락 되기는 되었으며, 다음작업은 하드웨어 가속기에서 지원해 주는 것 중 하나로 TPU라는 것도 있는 것을 보았는데, 이걸 사용해서는 얼마나 빨리 모델을 만드는 지를 한번 측정해 볼까 합니다.

반응형