릴라(바둑 프로그램) (r20200302판)

문서 조회수 확인중...


파일:baduk_test3.png 주요 바둑 인공지능
[ 펼치기 · 접기 ]
파일:alphagologo.png
파일:Zenith_go.png
파일:제목 없음-1 사본.jpg
파일:crazystone logo.png
파일:fbartlogo.png
파일:leelaicon.png
AlphaGo
Zen
DeepZenGo
Crazystone
ELF OpenGo[1]
Leela
파일:dolbaram-2.jpg
파일:TAL 사본.png
파일:432211_107868716046526_1605810711_n.jpg
파일:fuego.png
파일:handol_logo.jpg
돌바람
절예[2]
CGI
Fuego
한돌
[1] 별도의 로고가 없이 페이스북 로고를 쓴다.
[2] 별도의 로고가 없이 한큐바둑(텐센트) 로고를 쓴다.


Leela 홈페이지
Leela Zero 홈페이지
SAI 홈페이지
파일:leela_small3.png
1. 개요
2. 상세
2.1. Leela
2.2. Leela Zero
2.2.1. 강화학습 기여 방법
2.2.2. 대국 방법
2.3. SAI
3. 함께 보기


1. 개요


벨기에의 지안 카를로 파스쿠토(Gian-Carlo Pascutto)가 개발한 바둑 인공지능.

2. 상세


원래 지안 카를로 파스쿠토는 체스 인공지능을 만들던 프로그래머이다.
기존의 다른 인공지능 바둑 프로그램들은 처럼 유료 상용 프로그램이거나 알파고절예처럼 공개되지 않은 프로그램이었다. 그러나 릴라는 아예 무료로 풀어버린 것이 가장 큰 특징.
한큐바둑타이젬바둑에서 아이디 Leela, 닉네임 Leela(P)[1]로 활동 중이다.

2.1. Leela


공개된 최신버전은 0.11.0이고, 이 이후로는 개발자가 후술할 릴라 제로 프로젝트에만 집중하고 있다. 셋업 파일도 24.7MB에 불과하여 매우 가볍다. 바둑 갤러리에서는 의 불법 복제 크랙판을 가지고 형세판단(이른바 젠세판단)을 했으나, 2017년 하반기인 지금에는 아예 저작권 문제가 없는 릴라를 가지고 릴세판단(...)을 한다.
CPU만 사용하도록 실행할 수도 있고, GPU까지 사용하도록 실행할 수도 있다. GPU 사용 버전의 경우 프로 바둑기사와 싸워볼 수 있는 레벨은 된다. 개발 1~2년만에 이 정도까지 온 것.

절예 vs 릴라

2.2. Leela Zero


구글 딥마인드논문을 바탕으로 하여 알파고 제로를 재구현하기 위한 프로젝트. 스스로를 "오픈 소스 알파고 제로"로 소개하고 있다.[2] 따라서 ResNet 구조를 가지며, 바둑의 규칙[3] 이외의 지식은 일절 입력하지 않고 강화학습을 진행한다. 자가대국을 MCTS 1,600 simulations(즉, 1,600 visits[4])의 조건에서 시행한다는 점, 어느 정도 학습이 진행된 가중치는 기존의 best-network와 시험대국 400판을 치러서 55% 이상의 승률을 거둘 때 새로운 best-network가 된다는 점 등은 논문을 통해 공개된 알파고 제로의 진행방식을 충실히 따른 것이다.[5] 단, 알파고 제로 40블록에서의 40은 convolutional block 1개와 residual block 39개를 합한 것을 가리키는 수치였지만 릴라 제로에서의 40은 convolutional block은 별도로 치고 residual block의 개수만을 가리키는 것이기 때문에, 실제 구성 상으로는 릴라 제로의 블록이 1개 더 많다는 차이가 있다.[6]
GitHub을 통해 소스 코드를 공개하고 있다.[7] 알파고 제로가 자가대국을 통한 강화학습 과정에 엄청난 계산 자원을 요구하기 때문에, 릴라 제로는 분산 컴퓨팅을 사용하고 있다. 프로젝트를 시작하면서 개발자는 GTX 1080 Ti 정도의 평범한(?) 가정용 컴퓨터로는 알파고 제로의 학습과정을 다 재현하는 데에 1,700년이 걸린다고 말하면서, 유저들에게 컴퓨팅 파워를 빌려줄 것을 부탁하였다. 누구든 일정 성능 이상의 그래픽 카드가 있으면 이 곳에서 AutoGTP를 다운받아서 실행하여 프로젝트에 기여할 수 있다. AutoGTP를 통해 기부되는 연산력은 자가대국을 통한 강화학습과, 학습으로 얻어진 새 가중치의 검정 과정에 쓰인다.
제로 계열 오픈 소스 바둑 인공지능의 활용에 있어서, 가중치 파일은 매우 다양한 종류가 이용되고 있으나[8] 엔진만큼은 릴라 제로의 것이 사용되는 경우가 아주 많다. 공개된 ELF 오픈고, 미니고의 가중치 파일들도 릴라 제로 엔진에서 구동하게끔 변환을 거친 다음 leelaz.exe를 이용하여 돌리게 된다. OGS에서 활동했던 RoyalLZ-ELFRoyalMinigo도 프로필에 LZ 엔진으로 돌린다고 명시되어 있다. 릴라 제로가 엔진까지 공개해 준 것이 제로 계열 바둑 인공지능이 널리 활용되는 데에 큰 역할을 한다는 것을 알 수 있는 대목이다.
릴라 제로 가중치 파일[9]의 학습은 2017년 11월에 랜덤한 착수를 하는 0번 가중치에서 출발하였다. 학습을 통해 가중치 번호가 올라가면서 2018년 1월에는 6블록으로, 같은 해 3월에 10블록, 4월에 15블록, 7월에 20블록, 9월에는 40블록으로 크기가 점차 커져 왔고,[10][11] 2019년 1월 중에는 가중치 번호가 200번대에 돌입하게 되었다. 도중에 엘프고의 기보를 이용한 지도학습이 이루어진 시기가 있다. 이 구간에서는 지도학습을 엘프고의 기보와 릴라 제로의 자가대국 기보를 일정 비율로 섞어서 진행시켰다고 한다. 이런 이유들로 인해, 릴라 제로가 걸어온 학습과정은 순수한 강화학습은 아니다.
계속 가중치의 업데이트가 되어오다가 2019년 12월 16일에 처음으로, 자가대국이 50만 판이 넘게 쌓이도록 새로운 가중치를 얻지 못하는 일이 생겼다. 관련 공지
대국에서는 고작 수십 visits의 계산만으로도 상술한 Leela 0.11.0을 압도할 정도의 강한 기력을 가졌다. 일류 프로기사의 수준을 넘어섰으며, 이로 인해 2018년 상반기에 이르러 드디어 가정용 컴퓨터로도 인간 최고수를 능가하는 기력의 구현이 가능하게 되었다. 현재는 프로기사에게 치석 2점을 주고 덤 6.5집을 받는 형태의 접바둑[12]으로까지 승부가 가능한 정도.[13]
그러나 사활이 완벽하지 않아 정확한 수순을 못 밟거나 돌의 생사를 착각하는 경우가 있으며, 제로 계열의 고질적인 문제점인 축 버그를 일으키면서 어이없게 판을 망치는 일도 일어난다. 릴라 제로가 이런 상황에 걸려든 경우에는 보통 계산이 진행되는 동안 승률 값이 크게 요동치는 것을 볼 수 있다.[14] 딥마인드에 의하면 알파고 제로 40블록도 40일 간의 학습과정 끝자락에 가서는 축 개념을 이해했다고 하므로, 지금도 학습을 진행 중인 릴라 제로 40블록에게도 축 문제가 해결될 희망은 있는 셈이다. 한참 먼 얘기지만
요즘은 바둑으로 활동하는 유튜버들을 통해서도 많이 만나볼 수 있다. 방송에서 진행자가 인공지능에 도전했다가 털리는 모습을 보여주기도 하고 가끔은 축버그로 이겨버리기도 하고 바둑대회의 중계나 고전 명국의 복기 같은 컨텐츠를 준비하여 해설을 진행하면서 주요 장면을 릴라 제로에게 분석시켜 Lizzie 화면을 통해 보여주는 등의 방식으로 활용된다. 2019년 말 현재는 바둑TV의 프로바둑 중계에서도 승률예측으로 등장한다. 돌바람, 미니고, 엘프고, 릴라 제로 4개 기종의 승률을 화면 한 쪽에 띄워준다. 덕분에 국면이 좀 복잡해도 채널을 틀자마자 누가 우세한지 바로 알 수 있다. 선수가 한 수 착수할 때마다 착수한 선수의 승률이 큰 폭으로 떨어지는 일이 잦아서, 인공지능과 프로기사의 수준 차이를 실시간으로 절감할 수 있다.
릴라 제로 GitHubissues 란에 유저들이 궁금해할만한 여러 문의들이 올라온다. 릴라 제로 Discord도 있는데 개발자들의 논의가 종종 올라오고, 또 미니고, 카타고 채널도 입점(?)해 있다. 릴라 제로를 비롯한 바둑 인공지능에 대해 궁금한 점이 많을 때 들어가보면 좋은 곳들.
제로 계열 바둑 인공지능인 릴라 제로, ELF 오픈고, 미니고는 서로 공통점이 많다. 때문에 이들의 문서에서 서로를 많이 언급하므로, 같이 참고해볼 것.

2.2.1. 강화학습 기여 방법


압축을 풀면 그 안에 readme.txt 파일이 들어 있다. 여기에 옵션을 적용할 방법이 영문으로 적혀 있다. 일단 기본적으로 릴라 제로를 실행하면 1코어씩 한 게임씩만 진행된다. -g 옵션을 이용하면 모든 CPU의 자원을 효과적으로 사용한다. 가령 4코어 8스레드인 경우, -g 8 이라고 적으면 한 번 켤 때마다 8게임씩 진행 된다. 또 다른 옵션으로는 -k가 있다. -k (폴더 경로)를 적으면 해당 폴더에 기보가 저장된다. 실행하는 방법은 릴라 제로가 있는 폴더에서 메모장을 만들어서 아래 명령어를 입력하고 저장한 후, 파일 확장자를 .txt에서 .bat파일(배치파일)로 바꾼 뒤 실행하면 된다.

@echo off

autogtp -g 숫자 -k 폴더명

도스창이 아닌 바둑판을 눈으로 보면서 참여할 수 있다. 첫 번째로 자바를 다운받고 설치한다. 두 번째로 최신 버전 LeelaWatcher를 다운받고, 릴라 제로가 설치된 폴더 안에 압축을 풀어 파일을 옮겨넣는다. 마지막으로 실행을 위해 릴라 제로가 있는 폴더에서 메모장을 만든다. 아래 명령어를 입력하고 저장한 후에 파일 확장자를 .txt에서 .bat파일(배치파일)로 바꾼 뒤 실행하면 바둑판이 나타난다.

@echo off

java -jar LeelaWatcher-1.1.0.jar . autogtp.exe


2.2.2. 대국 방법


릴라 제로를 이용하고 싶다면 http://zero.sjeng.org에 접속하여 엔진가중치 파일을 다운받는다. 그 후에 Sabaki, GoGUI 등의 GTP를 연동시키면 된다. 이 기사에 나온 도식을 참고할 것.
보다 간단히 설치하고 싶다면, 세븐틴 님의 인공지능 바둑 통합설치팩을 이용하면 된다. 블로그 바로가기 유튜브 채널 바로가기
통합설치팩을 받기 싫으면 Lizzie만 다운받아도 릴라 제로 엔진과 릴라 제로 15블록 가중치가 설정이 되어 있기 때문에 곧바로 사용할 수 있다. 단, Java가 설치되어 있어야 한다.

2.3. SAI


Gian-Carlo Pascutto를 비롯하여 많은 인공지능 바둑 개발자들의 관심사였던, 조정 덤을 인식할 수 있는 바둑 인공지능. 논문의 제목에서 볼 수 있는 것처럼 a Sensible Artificial Intelligence that plays Go의 줄임말이다.
Leela Zero와 AutoGTP를 기반으로 개발되었다. 따라서 이번에도 가중치 학습에 필요한 GPU 연산력은 AutoGTP를 켜주는 유저들로부터 기부받는다.
7x7과 9x9 바둑판 위에서의 연구를 거쳤고, 2019년 9월부터 19x19 바둑판용 6블록 128필터짜리[15] 가중치의 학습을 시작했다. 기부되는 연산량은 릴라 제로보다 훨씬 적지만 블록 수가 적은 덕에 학습이 빠르게 이루어지고 있다. 블록 및 필터 수가 워낙 적은 탓에 다른 제로 계열 인공지능들에 비해 기력이 한참 약하지만, 그래도 젠7의 9단 모드를 제압할 정도의 기력에는 도달하였다.
12월 3일에 올라온 139번 가중치부터는 크기가 9블록 192필터로 늘어났다. 9블록 가중치의 학습은 기존의 6블록 가중치의 자가대국 기보로 학습시켜서 얻은 가중치에서 출발하며, 여기서부터 다시 자가대국을 치르면서 가중치 번호를 올려나간다. 이 방식으로 SAI도 릴라 제로처럼 크기를 계속해서 늘려나가는 길을 택할 것으로 보인다.
전용 엔진을 이 곳에서 다운받은 뒤, 가중치 파일을 이 곳에서 다운받아 연동하여 이용하면 된다. SAI도 세븐틴 통합설치팩에 포함되어 있으므로, 직접 설정해서 쓰기 어렵다면 통합설치팩을 깔아서 이용하면 된다.

3. 함께 보기



[1] (P)는 프로 바둑기사라는 뜻이다. 한국기원에서는 릴라한테 프로 바둑기사 면장을 준 적이 없으므로, 일본기원이나 중국기원에서 프로 면장을 받은 것으로 보인다. 타이젬바둑에서 시작해서 2017년 현재는 프로 바둑기사를 나타내는 방법으로 모든 인터넷 바둑 사이트에서 통일했다.[2] 이런 방식의 바둑 인공지능을 제로 계열이라고도 부른다.[3] 규칙은 중국식으로 입력되며, 따라서 덤 7.5집의 바둑을 둔다. 제로 계열 인공지능이 대국 종반에 자기 집을 막 메우는 수를 두더라도 너무 놀라지 말 것. 그 중 대다수는 중국식에서 딱히 손해나는 짓이 아니니까 그러는 것이다.[4] 그런데 알파제로의 논문에서는 숫자만 800으로 바뀌고 방식을 묘사하는 데 쓰인 표현은 똑같았는데, 미니고에서는 자가대국 설정을 800 playouts로 택하고 있는 걸로 보아 이것을 visits가 아니라 playouts로 해석한 듯하다. 페이스북의 ELF 오픈고 논문에서는 rollouts라는 표현을 썼다.[5] 이 부분은 알파제로로 넘어가면서 또 달라졌는데, 알파제로의 진행방식은 미니고가 차용하고 있다. 미니고는 릴라 제로와는 달리 가중치가 더 나아졌는가를 시험하기 위한 검정대국은 시행하지 않고 자가대국이 일정 횟수가 차면 새 가중치 번호를 붙이는데, 이는 알파제로가 그랬기 때문이다. 릴라 제로의 기력 그래프는 버전이 오를 수록 증가하기만 하는 반면 미니고의 기력 그래프는 들쭉날쭉한 이유가 바로 이것이다.[6] 이 때문에 릴라 제로를 40블록(과거 버전의 경우 20블록, 15블록 등)으로 표기해오던 페이지들에서는 블록의 수까지 알파고 제로와 똑같이 구성한 미니고의 크기를 19블록, 39블록 등으로 표기하게 된다.예시 참고로 이와 같은 이유로 20블록인 엘프고도 알파고 제로 20블록보다 한 블록이 더 많다.[7] 그러므로 누구든 본인에게 좋은 아이디어가 있다고 생각하면 소스 코드에 수정을 가하여 얼마든지 적용해볼 수 있다. 그러나 프로그램이 수많은 전문가들의 시행착오와 실험을 바탕으로 정해진 방식임을 고려하면, 개선을 실제로 이뤄내는 것은 절대 쉬운 일이 아님을 짐작할 수 있다.[8] ELF 오픈고, 미니고 외에도 또 대표적으로 많이 이용되는 것으로는, 기보를 입력하여 진행하는 지도학습을 통해 좀 더 인간적인 기풍을 내도록 시도한 15블록 가중치인 릴라 마스터 GX가 있다. 릴라 마스터 GX를 학습시킬 때 입력된 기보들 중에는 인간끼리 둔 바둑의 기보도 있고 릴라 제로의 자가대국 기보도 있는데, 이 두 종류의 기보 개수의 비율을 바꿔가면서 다양한 버전을 냈다.[9] 네트워크라고 지칭될 때도 있다.[10] 하나의 가중치가 작은 블록 수로 시작하여 점점 크기가 늘어나면서 발전했다는 점도 알파고 제로와의 차이점이다. 개발자 Gian-Carlo Pascutto도 처음에는 이것을 40블록으로까지 진행할 계획은 없었다고 한다. 즉, 프로젝트를 초기 계획보다 오래 진행하게 되면서 사이즈를 늘려나가는 길을 걷게 된 것.[11] 15블록의 마지막 가중치 번호는 157번, 20블록의 번호는 173번이다. 참고로 15블록 릴라 제로라고 하면 과거에는 릴라 제로 157번 가중치를 의미하였으나, 현재는 bubblesld와 bjiyxo가 157번 가중치에서 15블록 형태를 유지한 채 릴라 제로의 더 발전된 가중치(40블록)들이 남긴 자가대국 기보로 지도학습을 시켜서 얻어낸 가중치를 의미한다. 후자는 이 곳에서 찾을 수 있다. 지금은 GitHub을 통해 배포되는 Lizzie에 릴라 제로 15블록이 기본적으로 세팅되어 있는데, 버전이 항상 최신은 아니다. 비슷한 것이 20블록으로도 있지만 아직은 같은 20블록인 엘프고보다 못 두므로 이 쪽은 굳이 찾을 필요가 없다.[12] SAI와 카타고의 논문이 공개되기 전까지는 이것이 대부분의 제로 계열 인공지능이 그나마 정상적으로 작동해주는 유일한 형태의 접바둑 방식이었다. 본래의 2점 바둑에서는 백에게 덤이 주어지지 않으므로, 이것은 정식 2점 접바둑과 정선의 사이에 해당하는 핸디캡이다. 릴라 제로는 기본적으로 덤 7.5집 규칙을 바탕으로 학습된 인공지능이고, 제로 계열에게 형세판단 능력의 큰 손실 없이 조정된 덤을 인식하게 하는 것이 어려웠기 때문에 접바둑을 할 때 이 형식을 오랫동안 택해 왔다. 릴라 제로나 엘프고 등은 치석을 3개 이상 깔면 어떤 진행도로부터도 승산을 잘 못 찾아내기 때문에 제대로 된 기력을 발휘하지 못한다. 그러나 2019년 말 현재는 바두기, 카타고 등 흑 치석 3점에 백 덤 5.5집 형태의 접바둑까지도 제법 잘 소화하는 인공지능들이 여럿 나와 있다.[13] 릴라 제로를 비롯한 인공지능들은 visits 수 설정에 따라 기력이 많이 달라지지만, 어떻게 설정했을 때 이런 퍼포먼스가 가능한지까지 정확하게 알려지지는 않았다.[14] 가치망이 해당 장면에서는 형세를 정확히 판단하지 못한 탓에, 트리 탐색을 거치면서 비교적 정확한 값 쪽으로 옮겨가며 심하게 변동하는 것.[15] 릴라 제로는 40블록 256필터.