brunch

You can make anything
by writing

C.S.Lewis

by gnugeun Feb 18. 2018

윈도우 10 Bash로 gym[atari]!

우분투 사용할 여건이 안되시면 이렇게 gym[atari]를 돌려보세요

windows 10 bash - WSL 환경은 windows 10 64bit build 14316 이상에서만 가능합니다.


이번 글의 목표 화면이다.


한국에서 AI를 공부하다 보면 누구나 한 번쯤은 보게 되는 강의가 홍콩과기대 김성훈 교수님의 강의 라면,

http://hunkim.github.io/ml/


누구나 한 번쯤 도전해보게 되는 예제가 openAI gym이라고 할 수 있다.

https://github.com/openai/gym


그런데 이 gym 안에서 Atari 쪽 예제들은 windows 환경을 지원하지 않는다.

나같이 windows 환경에 친숙한 개발자들에겐 참으로 안타까운 일이 아닐 수 없다.


atari 쪽 게임들이 재밌어 보여서 구글링을 시작했다.

그런데 a to z 까지 딱 이거다 하는 포스팅이 보이지 않아서 한 번 정리해 보았다.


사실 운영체제로 우분투를 사용하면 이런 복잡한 방법은 사용하지 않아도 된다.


당장 atari 게임에 도전해보고 싶은데 상황상 windows 환경에서만 가능할 때,

windows 10 bash 환경을 경험해보고 싶을 때,

한 번 사용해보자.


우선 이 모든 게 쉬워진 이유는 아래처럼 윈도우 10에서 bash shell 지원이 업데이트되었기 때문이다.

참고로 이 기능을 Windows Subsystem for Linux 줄여서 WSL이라고 많이들 부르는 것 같다.

https://blogs.msdn.microsoft.com/eva/?p=7633

위 블로그 포스팅의 핵심 내용은 아래와 같다.

윈도우 환경에서
리눅스 Command Line Interface를 사용하기 위해서 기존에는
윈도우 플랫폼에서 실행할 수 있는 유닉스 환경인 Cygwin을 이용하거나
가상 머신 혹은 컨테이너를 이용해야 했습니다.
기존 환경의 문제점을 개선하기 위해
마이크로소프트와 우분투를 창립한 캐노니컬(Canonical)이라는 회사가 합작하여
우분투 리눅스에서 수행되는 Bash shell 바이너리 그 자체를
윈도우에서 수행할 수 있도록 만들었습니다.


사용해보니 별도의 프로그램 설치 없이 윈도우에서 윈도우용 우분투만 다운로드하여 설치하면

바로 bash shell을 사용할 수 있다는 게 가장 큰 장점이다.


그럼 시작해보자.





1. windows 10에서 bash shell 사용 설정하자


설정은 아래 사이트대로 따라 하면 된다. 어렵지 않다.

https://docs.microsoft.com/en-us/windows/wsl/install-win10

위 포스팅은 영어다. 아직 한글 지원이 안된단다. 그래서 아래에 적당히 한글로 옮겨놨다.



1-1 리눅스를 위한 윈도우 서브시스템을 설치


일단 관리자 권한으로 파워쉘을 실행해서 아래 명령을 실행한다. WSL이 활성화된다.


Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux


꼭 관리자 권한으로 실행해야 한다.
y 입력하여 다시 시작하자.



다음으로 윈도우 빌드 버전을 확인한다. 빌드 버전에 따라 두 가지 방법이 있다. 어느 쪽이든 쉽다. 

버전은 아래와 같이 확인하면 된다.


확인된 버전이 16215 이전 버전이라면 아래 링크를 따라 하면 된다.


https://docs.microsoft.com/en-us/windows/wsl/install-win10#for-anniversary-update-and-creators-update-install-using-lxrun


16215 이후 버전이면 아래 내용대로 따라 하면 된다.



1-2 활성화된 WSL에 어떤 리눅스를 올릴 것인가를 선택하여 설치한다.


아래 3가지 버전이 제공된다.

Ubuntu 우분투

https://www.microsoft.com/store/p/ubuntu/9nblggh4msv6

OpenSUSE

https://www.microsoft.com/store/apps/9njvjts82tjx

SLE 

https://www.microsoft.com/store/apps/9p32mwbh6cns


Ubuntu를 선택하고 다운로드 하자.


실행하면 아래와 같이 Ubuntu 인스톨 과정이 진행된다.



이후 계정 설정까지 완료하면 bash 환경이 나타난다.


자 이제 윈도우10 에서 우분투 환경 설정이 완료되었다.


여기선 윈도우용으로 설치했던 기존 프로그램들은 사용할 수 없으니,

다시 기본적인 개발환경 세팅이 필요하다.




2. 기본 개발환경 세팅



2-1. sudo apt-get update 등

sudo apt-get update

sudo apt full-upgrade

sudo apt-get install cmake zlib1g-dev libjpeg-dev xvfb libav-tools xorg-dev libboost-all-dev libsdl2-dev swig git g++

(세 번째 명령을 실행하지 않으면 추후 gym[atari] 설치 시 에러가 난다. )




2-2 그래픽 카드 드라이버 설치

내 노트북은 nvidia geforce gtx 960m이다.

windows 10 bash 환경에선 

sudo apt-get http://kr.download.nvidia.com/XFree86/Linux-x86_64/390.25/NVIDIA-Linux-x86_64-390.25.run

이 명령어로 드라이버를 깔면 실패한다. 

정확한 원인은 잘 모르겠지만 애초에 X org 서버를 지원하지 않는 WSL이라서 그런 것 같기도 하다.


그래서 아래 명령어로 대신하였다. 

sudo apt-get install nvidia-375 


아래 링크를 읽어보면 문제가 발생하는 거 같기도 하지만 다른 대안을 찾을 수가 없어서 그냥 진행하였다.

gym[atari] 테스트까진 별 문제없었다.


혹시 대안을 아시는 분은 댓글로 알려주시면 정말 감사하겠다.

https://askubuntu.com/questions/836386/ubuntu-16-04-nvidia-drivers-dont-work-for-gtx-960m



2-3. 윈도우용 X org 서버 설치


이 프로그램은 우분투에서 GUI 프로그램을 실행하기 위해 윈도우에 설치하는 프로그램이다. 

웹브라우저 firefox와 파일 관리자 nautilus, 압축 관리 프로그램 File Roller 등의 GUI Util 은 물론,

이후 Pycharm 실행하기 위해서 필요하다. 


WSL은 GUI 프로그램을 실행하기 위한 X org 서버를 제공하지 않는다.


하지만 우분투에서 사용하는 X windows system은 기본적으로 서버-클라이언트 구조로 설계되어 있기 때문에 로컬뿐 아니라 원격지 서버로 화면을 띄우는 게 가능하다. 


X org 및 우분투에서 사용하는 그래픽 시스템, X Windows System에 대해서 궁금하다면,

아래 링크를 참조해보자.

https://ko.wikipedia.org/wiki/X_%EC%9C%88%EB%8F%84_%EC%8B%9C%EC%8A%A4%ED%85%9C


따라서 GUI 프로그램을 실행하기 위해선 정보를 받아줄 X org 서버를 윈도우에 설치해야 한다.

설치된 X org 서버는 우분투에서 실행된 GUI 프로그램이 보내는 정보를 받아 윈도우 환경에서 화면을 띄워줄 것이다. 


구글링 해보면 대표적인 X org 서버로 Xming과 VCXSRV 가 나온다. 

(연관검색어로 Xming vs VCXSRV 가 뜨기도 한다)


난 먼저 손에 잡힌 VCXSRV로 설치했다. 

https://sourceforge.net/projects/vcxsrv/files/vcxsrv/


설치하고 실행하면 아무 화면도 뜨지 않는다.

트레이 아이콘을 확인해보면 실행됐는지 알 수 있다.



2-4. Firefox, Nautilus, File Roller 설치

https://medium.com/@rkttu/windows-10%EC%97%90%EC%84%9C-%EB%A6%AC%EB%88%85%EC%8A%A4%EC%9A%A9-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%84%A4%EC%B9%98%ED%95%98%EA%B3%A0-%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0-2cb0d7892d12

위 사이트에 자세하게 설명 잘 되어 있다.  그대로 따라 하면 된다.

아래 명령어만 별도로 짧게 설명하겠다.

export DISPLAY=:0 (zero다)

export는 환경변수를 설정하는 명령어다. 

X 윈도우 시스템은 서버 클라이언트 구조 특성상 여러 대의 디스플레이 사용이 가능하다. 

디스플레이들은 0부터 차례대로 넘버링되며 따라서 :0 은 첫 번째 로컬 디스플레이를 의미한다.

윈도우에 X org 서버를 띄워놓았기 때문에 위와 같이 세팅하면 우분투 GUI 프로그램은 VCXSRV를 통해 윈도우에 뜨게 될 것이다. 

같은 리눅스 시스템이라면 디스플레이될 pc1(x.x.x.x)에 아래 명령어를 실행해놓고

xhost + y.y.y.y

디스플레이를 내보낼 pc2(y.y.y.y)에서

export DISPLAY=x.x.x.x:0.0

이런 식으로 IP를 지정해서 띄울 수도 있다.


위 링크대로 잘 설치했다면, 아래 그림처럼 윈도우에서 firefox와 우분투 파일 관리 프로그램 nautilus가 제대로 나타난 걸 확인할 수 있다.




2-5 아나콘다, 텐서플로우 설치 후 콘다 환경 세팅

기본적으로 우분투에 python 3.5가 내장되어 있긴 하다. 3.5로도 실행되지만, 최신 버전을 사용하고 싶어서 아나콘다를 통해 3.6 버전으로 사용할 것이다.

firefox로 아래 링크 들어가서 파일 다운로드하고 실행하면 설치된다.

https://docs.anaconda.com/anaconda/install/linux

마지막에 ms visual studio code 설치할 거냐고 물어보는데 난 pycharm을 사용할 거라 안 한다고 했다.

아래와 같이 환경 변수만 세팅해놓았다.

export PATH=~/anaconda3/bin:$PATH


2-6. pycharm 설치

구글에 pycharm이라고 치면 제일 위에 pycharm 개발사 jetbrains 홈페이지가 나온다. 

다운로드로 들어가면 os 인식해서 딱 맞는 버전으로 나온다. 

유료인 professional 버전과 무료인 community 버전이 나오는데 난 커뮤니티 버전을 깔았다.

참고로 pycharm 커뮤니티 버전은 상업용으로 회사에서 써도 아무 문제없다. 

(둘 간의 차이 중 내가 아쉬웠던 가장 큰 차이는 프로페셔널 버전에만 있는 원격지 환경 지원 기능이다. )

https://www.google.co.kr/search?q=pycharm&rlz=1C1CHZL_koKR703KR703&oq=pycharm&aqs=chrome..69i57j69i60j69i61l2.3076j0j7&sourceid=chrome&ie=UTF-8

pycharm은 이클립스처럼 다운로드하고 압축 풀면 바로 사용 가능하다. 


실행하면 몇 가지 세팅 절차 후 pycharm 이 실행된다. 

난 ui 테마로 dracula를 선택했고, 추가로 markdown 지원과 bash 지원을 설치했다.


실행하면 아래와 같은 화면이 나온다.

난 기존에 작업하던 프로젝트가 없어서 create new project 했다.


1번에서 원하는 프로젝트 명을 써주고

2번 화살표를 눌러서 

3번으로 콘다 환경으로 새로 만들도록 설정한다. (아나콘다 사용 안 한다면 불필요)

4번으로 아나콘다 환경 이름을 지어준다. (역시 아나콘다 사용 안 한다면 불필요)


이후 pycharm에서 이용할 라이브러리들을 세팅해준다.


project interpreter 선택해서 원하는 파이썬 버전 선택한 후

1번 눌러서 프로젝트에서 쓸 라이브러리 패키지들을

2번처럼 이름으로 찾아주어

3번을 눌러 인스톨해주면 된다.

4번처럼 성공메시지가 나오면 잘 된 거다.


마지막으로 atari를 세팅해준다.


가끔씩 라이브러리가 안 보인다거나 라이브러리 검색이 안 되는 경우가 있었다.

내가 pycharm에 익숙지 않아서 원인을 잘 모르겠는데 아래 그림에서 아래 녹색 동그라미(use conda package manage)를 클릭해주면 잘 나타난다. 

아나콘다를 사용하면 pycharm 실행 후 저 메뉴를 처음 들어갈 때마다 저 동그라미를 한 번씩 눌러줘야 하는 건지 아직 잘 모르겠다. 


3. openai atari gym 테스트 코드 작성 및 실행


3-1 테스트 코드 작성


import gym

env = gym.make("SpaceInvaders-v0")

env.reset()

for _ in range(1000):

    env.render()

    env.step(env.action_space.sample())


3-2 실행 및 확인




원래 텐서플로우까지 이용해서 코드를 작성 후 실행 확인을 해보려고 했는데

글이 너무 길어져서 다음 글에서 확인해보겠다.

작가의 이전글 텐서플로우(TensorFlow) 시작하기 - 2
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari