Minigo: Building a Go AI with Kubernetes and TensorFlow (Cloud Next ’18)

[음악 재생] 앤드류 잭슨 : 좋아, 안녕하세요 제게 합류 해 주셔서 감사합니다

여러분 모두가 좋은 한 주를 보내길 바랍니다 이것은 Minigo에 관한 이야기 ​​일 것입니다 얻은 20 % 프로젝트의 이야기입니다 통제 불능이다 세상에, 너 밖에 많은 사람들이있어

그래서 모두 와줘서 고마워 그러니 Minigo가 무엇인지에 대한 질문으로 시작하겠습니다 그리고 Minigo go는 오픈 소스 독립적 인 구현입니다 알파 제로 (AlphaGo Zero) 알고리즘 그래서 모두의 손을 빠르게 보여줄 수 있습니까? 누가 알파고에 대해 들어 봤어? 그것은 많은 손입니다

그래서 AlphaGo Zero 알고리즘은 "Nature"에 게시되었습니다 그것은 전문적인 인간을 이길 수있는 최초의 AI입니다 그리고이 이야기는 Minigo를 다루겠습니다 무엇 자체가 이동합니다 기계 학습에 대한 간단한 소개

클라우드 대회입니다 나는 그것을 추측하고 싶지 않다 우리는 일종의 회오리 바람 여행을 할 것입니다 학습 및 Minigo에 적용하는 방법 그러나 우리가 정말로 여기에서 이야기하고있는 것 Google에서이를 어떻게 확장 할 수 있었는지 클라우드 플랫폼

그리고 저는 데모를하고 조금 이야기 할 것입니다 우리가 배운 것들에 대해, 바라 건데,이 유용 할거야 시작하려면 Minigo가 무엇입니까? 어디에서 찾을 수 있습니까? GitHub입니다 거기서 확인하십시오 TensorFlow 아래에 있습니다

githubcom– 또는 거기에, 나는 생각한다 githubcom/tensorflow/minigo 부담없이 간단한 요청을 확인하십시오

다시 말하지만, 공식 Google 프로젝트는 아닙니다 나는 여기서 처음부터 강조 할 필요가있다 Minigo는 AlphaGo가 아닙니다 우리는 DeepMind와 제휴하지 않았습니다 우리는 딥 마인드와 관련이 없습니다

나는 출판 된 저작물만으로이 코드를 작성했습니다 나는 그들의 소스 코드에 접근 할 수 없다 나는 그것을 검증하기 위해 소스 코드를 사용하지 않았다 왜 DeepMind가 AlphaGo를 만들었을 때 나는 이것을 어떻게 했습니까? 왜 미니고를 만들 필요가 있었습니까? 음, 처음에는 Go Player로 갈거야 Google의 소프트웨어 엔지니어가되는 것 외에도, 나는 또한 미국 이동 협회 (American Go Association)에 자원하여 나는 이사회에서 봉사한다

거의 12 년 동안 American Go에서 근무했습니다 나는 계속 해왔다 내 인생의 상당 부분을 위해 가라 그리고 나는 그것을 좋아한다 그리고 AlphaGo는 놀랍습니다 너가 Go 선수이고 외계인 정보원이라면 상상해 보라

만들어졌으며 당신의 언어를 구사합니다 Go는 선수들입니다 우리는 AlphaGo에 대해 정말 흥분했습니다 그러나 AlphaGo는 은퇴했습니다 그래서 나는 내가 총을 맞아야 할지도 모른다고 느꼈다

이것을 창조하려고 노력할 때 그래서 Go 선수로 생각하는 것들이 많이 있습니다 우리는 AlphaGo에서 할 수 있고 배울 수 있습니다 여기에는 풍부한 혈관이 있습니다 내 것이고

그래서 Minigo에 대한 우리의 목표는 결과를 재현하는 것이 었습니다 프로그램의 명확하고 읽기 쉬운 예를 제공합니다 당신이 GitHub에서 그것을 확인한다면, 나는 당신이하기를 희망합니다 파이썬은 약 2,000 줄에 불과합니다 이 알고리즘은 세계를 변화시키는 알고리즘에 매우 좋습니다

이것도 전시하고 시연 할 수 있기를 바랍니다 Google Cloud의 강력한 기능 이것은 기본적으로 부부 였기 때문에 엔지니어가 여가 시간에 20 %의 시간을 보냈습니다 이것을 구현하려고합니다 우리가 할 수있는 유일한 방법은 우리가 찾을 수있는 가장 긴 레버 암을 사용했습니다 그리고 레버리지는 동사입니다

다른 것 그러나 문자 그대로 여기서 나는 그것을 의미한다 아주 작은 소프트웨어 인 힘 배수로서 엔지니어링 팀 Minigo는 어디에서 왔습니까? 그래서 AlphaGo와 DeepMind는 3 개의 논문에서 설명되었습니다 첫 번째 논문에서는 AlphaGo, 그리고 그것은 "깊은 신경과 함께하는 게임을 마스터하는 것"입니다

네트워크 및 트리 검색 " 그것은 "Nature"에 발표되었습니다 그리고 내 친구 브라이언 리 (Brian Lee) MuGo 또는 MicroGo라고 불리는 이 첫 번째 버전의 구현 그는 일종의 골격 구현을했습니다 그것은 네트워크의 절반을 구현했지만 나머지 절반은 구현하지 않았습니다 일종의 개념 증명이었습니다

AlphaGo 이후 두 번째 논문 "AlphaGo Zero"라고 불렀습니다 AlphaGo Zero는 알고리즘을 설명합니다 무작위 소음에서부터 시작된 그 다음에 어떻게 나아가 야하는지 가르쳐주었습니다 알파 조 제로 (AlphaGo Zero)의 종이와 제 친구 Brian의 MuGo 구현, 우리는 Minigo를 얻습니다 Minigo의 로고가 왜 그렇게 궁금한가요? 행복 한 찾고 로봇 사다리 떨어져 떨어지는, 모두 명확해질 것이다

나는 그가 왜 완전하게 보이는지 설명 할 것이다 그가 사다리에서 떨어지는 상황에 쉽게 대처할 수 있습니다 좋아요, 그래서 바둑 게임에 대해 이야기 해 봅시다 얼마나 많은 사람들이 놀았습니까? 아무도 없어요 와우, 그건 많은 사람들이야

얼마나 많은 사람들이 나가기를 좋아합니까? 예, 정확히 제가 듣고 싶은 것입니다 나도 좋아해 나는 오랫동안 이동을 해왔다 나는 그것을 정말로 좋아한다 그래서 우리는 할 것이다

무엇이 가야하는지에 대한 간단한 데모 이것은 처음에 보이는 것입니다 사람들은 차례로 돌을 내려 놓습니다 영토를 둘러싸고있는 보드에 캡처에 대해 이야기 할 때 캡처는 다음과 같습니다

돌들이 완전히 둘러싸여있을 때, 그들은 보드에서 벗겨진다 그것은 또한 돌의 더 큰 사슬에서 작동합니다 따라서 직각으로 연결된 그룹 그들의 운명을 나눕니다 그랬듯이 우승자는 다음과 같이 결정됩니다

당신이 보드를 나눌 때, 누구든지 더 많은 영토가있다 그게 전부 야 마치지도에 선을 그리는 것과 같습니다 니가 조각하고있어 나는 이것을 얻는다

당신은 그것을 얻는다 오른쪽 다이어그램에서 흰색이 둘러싸인 것을 볼 수 있습니다 모든 삼각형 모양의 점과 검정색이 둘러싸여있다 모든 제곱 된 점들 이것은 Go가 정말로 일종의 절대주의 게임이 아니라는 것을 의미합니다

당신은 적의 왕을 잡아야 만합니다 또는 적군을 완전히 파괴하십시오 계약을 협상하는 것보다 더 낫습니다 어디 좀 더 알고 싶습니까? 다른 사람보다 그리고 이것은 전체 게임이 어떻게 생겼는지에 대한 예입니다

그래서 이것은 Minigo의 행동입니다 영토를 스케치하는 걸 볼 수 있습니다 모퉁이에서 시작 그리고이 패턴은 바로 거기에서 일어나는 것을 봅니다 그것은 사다리라고합니다

사다리는 Go가 어려운 이유의 흥미로운 예입니다 그래서 이것은 꽤 솔직한 패턴입니다 당신은 그것이 다시 발전하는 것을 볼 수 있습니다 그것은 정말 명백한 패턴입니다 그것은 유아가 아마도 따라와 예측할 수있는 패턴입니다

Go가 매우 긴 지평을 가지고있는 예입니다 효과, 그 사다리의 결과 게임의 결과를 결정할 수 있습니다 그리고 앞으로 80 ~ 90 회의 움직임을 바라 볼 필요가 있습니다 그리고 왜 그렇게 어려운가? 사다리가 위대한 본보기예요 네가 가진 게임의 어디 까지나 분기 인자만으로도 각각의 경우에 대해 두 가지 움직임을 살펴보면, 이미 80 번에서 2 번까지 찾고 있습니다 실례합니다

가능한 위치 그래서 매우 높은 브랜칭 인자 정말 어렵게 만듭니다 게임은 정말 길다 최종 조건은 설명하기가 정말로 어렵습니다 Go와 함께, 당신은 – 체스와 함께, 왕이 체포되거나 장담 당했을 때, 게임은 끝났다

그리고 모두가이 게임이 끝났음을보고 동의 할 수 있습니다 Go를 사용하면 게임은 두 선수는 아무것도 남지 않았 음에 동의합니다 논쟁 할 가치가있는 이사회에 니가 있으면 이거 꽤 어렵다 게임이 어떻게 끝났는지 컴퓨터에 가르치 려합니다 사실, 그냥 보드 득점, 그냥 알고 보드를 채점 할 때가되었다는 것은 정말 어려운 문제입니다

그리고 마지막으로, 아마도 이것이 가장 중요 할 것입니다 부분적으로, Go에서 정말 힘들다 게임 중간에 누가 이기고 있는지 판별 할 수 있습니다 이것은 하나의 그래서이기는이 문제와 누가 이길 것인가 – 우리가 가진 가장 어려운 문제 중 하나입니다 분기 요인을 다루는 것은 너무 많다는 것입니다

모든 점에서 가능한 움직임, 정말 어려운 것 중 하나 우리가 풀어야 할 문제 그리고 한발 뒤로 물러서서 우리가 어떻게 접근할지 이야기해라 이 기계 학습 그래서 이것은 기계 학습에 관한 5 개의 슬라이드입니다 분명히 이것은 포괄적 인 설명이 아닙니다

나는 또한 언급해야한다 아마도 이것은 아마도 좋은 시간 – 우리 중 누구도 Minigo 팀에 박사 학위를 가지고 있지 않습니다 아마도이 잠재 고객에 사람들이있을 것입니다 누가 나를보다 잘 이해하지만, 나와 함께 견뎌야합니다 나는 이것이 사람들에게 계몽되기를 희망한다

누가 전에 전혀 기계를 배우지 않았을 지 모릅니다 신경 네트워크를위한 진짜 빠른 추론 그래서 기본적인 생각은 우리가 입력을 넣을 것입니다 출력물을 꺼내서 중간에 그 것을 우리가 이야기하는 모델입니다 우리는 너무 많이 걱정하고 싶지 않다

우리가 알아야 할 것을 제외하고는 그것이 무엇인지에 관해서 그것에 대해 몇 가지 첫 번째는 그것이 수학의 무리라는 것입니다 그것은 차별화가 가능하거나 차별화되기에 충분히 가깝습니다 두 번째는 정말 느리다는 것입니다 평가할 때 밀리 초 단위로 느리게 진행됩니다

그리고 그것은 왜 그것이 밀리 세컨드가 걸리는지 중요합니까? 그것은 꽤 빨리 보인다 글쎄요, 아마 수천 개의 당신이 할 수있는 움직임을 결정할 수 있습니다 그래서 추론을위한 신경망을 고려할 것입니다 이 추측 경로를 의미하는 추론, 우리는 우리의 의견에서 시작하여 우리의 결정을 내린다 그것이 바로 추론입니다, 그것은 또한 순회라고합니다

그리고 우리는 그것이 느리고 차별화 될 수 있다는 것을 알아야합니다 좋아, 그럼 어떻게 그 모델을 만들지? 중간에 그거? 음, 우리가하려고하는 것은 우리가 시도하고 양을 정할 것입니다 우리가 알고 있고 입력하는 입력이있는 오류 우리가 얻었어야 했어 그리고 우리는 그것들 사이의 차이점을 살펴볼 것입니다 차별화 할 수있는 모델을 시도하고 변경하십시오

그래서 우리는 우리에게 필요한 방향을 알고있다 그 모델에서 다른 값을 밀어 넣는다 오류를 줄일 수 있습니다 이것이 바로 기본적으로 기계 학습입니다 간단히 말해서 – 확률 적 구배 강하 기계 학습의 형태

하지만 그래, 그것은 선형 대수의 더미, 우리는 그것을 조정하려고 노력할 것입니다 그리고 우리는이 과정을 우리가 시도하는 곳에서 반복 할 수 있습니다 우리가 다 떨어질 때까지 오류를 약간 작게 만듭니다 데이터의 그 기능, 그 모델은 중간에 수 많은 변수의 함수 일 수 있습니다

근본적으로 우리는 손실을 최소화하려고 노력하고 있습니다 백만 변수 함수의 그리고 그것은 꽤 복잡합니다 그러나 운좋게도, 꽤 좋은 추상화가있다 이 모든 일을하기 때문에

그러니 계속 가자 그렇다면 Minigo에 대한 추론은 무엇입니까? 이 문제를 해결하기 위해 그것을 사용할 것입니까? 이 경우 Minigo에 대한 추론은 두 가지 질문을 의미합니다 우리는 어떤 움직임을 가져야 하는가, 누가 우리가 이기게 될 것이라고 생각 하는가? 그래서 당신이 왼쪽에 보인 그 보드가 우리의 의견입니다 우리는 Minigo에게 확률에 대해 물어볼 것입니다 다음 이동이있을 것으로 생각되는 곳의 분포

그리고 우리는 또한 그것을 표현하는 숫자를 물어볼 것입니다 누가 그것이 이길 것이라고 생각하는지 Minigo는 흰색이 이기기 위해 음수 1을 사용합니다 그리고 흑인이이기려면 1이 양수 제로는 전화하기에 너무 가깝다 – 완벽하게 균형 잡힌 – 음수 1에서 1 사이의 모든 위치에 그것이 이기기 위하여려고하고있는 누구를 계량하고 있는가

그래서 두 가지 산출물이 주어지면, 무엇입니까? 우리가 생각하는 움직임은 재생 될 것입니다 우리는 누가이기겠다고 생각합니까? 몬테 카를로 나무 수색이라고 칭한 무언가를하십시오 내가 언급 한 나의 친구 Brian Lee는 MuGo를 썼다 Pycon 2018에서 "Monte into A Deep Dive"라는 훌륭한 연설을했습니다 카를로 트리 검색 "코드

또한 우리 코드는 GitHub, Monte Carlo tree에 있습니다 검색은 정말 훌륭하고 읽기 쉽고, 추천 그래서 몬테카를로 트리 검색으로의 깊은 잠수가 좋습니다 따라서 몬테카를로 트리 검색을 통해이 셀프 플레이를함으로써, 우리는 오류를 정량화 할 수 있습니다 그래서 우리는 Minigo에게 어떤 움직임과 앞으로 나아갈 것인지에 대해 물었습니다

이제 우리는 오류를 합계로 정의 할 수 있습니다 원래 견적과의 차이점 실제로 움직일 움직임과 실제로 있었던 움직임 트리 검색으로 탐험 그래서 우리는 누가 가는지에 대한 견적을 사용합니다 우리가 그 움직임을 계속 탐구할지 여부를 결정하기 위해 승리하는 것 우리는이 움직임을 살펴볼 것입니다

그 다음으로 가장 가능성있는 것을보십시오 더 좋든 나쁘 든간에, 아마도 우리는 부모 이동을 탐색하지 않습니다 이해가 되니? 어쩌면? 인정할 수 있을까요? 이것이 일어날 수 있고, 우리는 할 수있다 나중에 세부 사항을 파헤 치십시오 좋아, 몬테카를로 나무 검색이야

누가 앞서고 있는지 움직이고 앞으로 나아갈 두 가지 요소 – 정책이라고 부르며 가치 신경망의 출력 따라서 정책에는 이사회의 주 (州) 다음 플레이는 어디에서 이루어질 것이라고 생각합니까? 그리고 가치는이 보드를 어떻게 평가할 것인가입니다 좋아, 그럼 빨리 정리하자 그것은 다섯 번째 슬라이드였습니다

이 슬라이드는 요약 슬라이드입니다 슬라이드 6 개를 얻는 방법입니다 이것은 우리의 보강 학습 요약입니다 강화 학습의 번개 버전 – 우리의 데이터를 사용하여 모델을 만들고, 우리 모델을 사용하여 더 많은 데이터를 만들고, 이제 우리는 데이터가 부족하지 않습니다 우리는 우리가 원하는만큼 이것을 계속 할 수 있습니다

그래서 모델은 무엇입니까? 모델은 우리가 중간에 가지고 있던 수학 더미입니다 우리는 그것을 비교함으로써 손실을 측정 할 수 있기를 원합니다 우리가 알고있는 해답이나 해답을 가지고 우리가 알고 있다고 생각하는 것 우리는 그 오류를 최소화함으로써 모델을 훈련시킨다 Minigo는 정책과 가치를 사용합니다

트리 검색을 수행하여 원본 견적을 수정하십시오 말이 돼? 어쩌면 누군가, 그렇지? 좋아, 우린 계속 진행할거야

강화 학습 루프 – 아주 간단합니다 우리가 설정할 수있는 좋은 덕목입니다 셀프 플레이가 더 나은 데이터를 만드는 곳, 더 나은 모델을 만들기 위해 훈련에이 방법을 사용합니다 그리고 그들은 서로를 강화합니다 문제는 – 나는 그 오류 중 하나를 상당히 크게 만들었고, 그건 사고가 아니에요

그 아이디어는 트리 검색을하는 것입니다 이러한 추론이나 전달 전달의 많은 수행 우리는 우리만큼 많은 정보를 원합니다 정책을 개선 할 수 있어야합니다 그리고 그것은 아마도 수백 또는 수천 개를하는 것을 의미합니다

각 이동 당 추론의 이제, 우리가 각각의 움직임에 대해 훈련 할 수 있다면, 그것은 우리가 수백 또는 수천 개의 추론을하고 있다는 것을 의미합니다 우리가 만드는 훈련 데이터 포인트 당 그래서 최소한이 비율을 가질 것입니다 우리는 추론을 할 때 수백에서 한 가지를해야합니다

대 훈련 단계 만들기 그런 종류의 문제가 여기에 설정되어 있습니까? 그래서 충분히 훈련시키기 위해서, 나는 수백만 게임에이를 수행해야하며, 그리고 나는 게임이 몇 분 정도 걸린다는 것을 안다 심지어 GPU 나 TPUs를 사용하고 있습니다 그래서 제 질문은 어떻게 확장합니까? 이제, 행복하게 이것은 문제입니다 당황스럽게 평행 한 누군가의 말을 빌리 자

Minigo의 사본 두 장이 서로 연주하면됩니다 다른 사본을 포함하지 않는다 미니 고 (Minigo)는 내가 이들 중 많은 것들을 회전시킬 수 있다는 것을 의미합니다 내가 할 수있는 한, 나는이 모든 것을 제거 할 좋은 방법이 있다고 가정한다 이 모든 것을 확장 할 수 있습니다

그리고 그것은 우리에게 이야기의 일부를 가져옵니다 우리 모두 여기에 온 것 같아 Google Cloud에서 이것을 사용하고 있습니다 그래서 우리는 이것을하기 위해 Kubernetes를 사용했습니다 그러나 가능한 한 최소 단위의 작업을 시작했습니다

우리가 할 수있는 그래서 우리의 훈련은 매우 간단했습니다 우리는 작업자가 클라우드 저장소를 사용하도록했습니다 우리가해야 할 일을 조정할 수있는 방법으로 이것은 정말로 잘 돌아갔다 클라우드 스토리지는 매우 유연하며, 모든 종류의 재미있는 방식으로 학대 할 수 있습니다

우리는 Cloud Storage를 사용하여 추적기 탄환의 종류, 우리가 결정하는 동안 중앙 집중식 서버를 작성해야합니까? 아니면 서버에 대해 이야기 할 필요가 있습니까? 기본적으로 클라우드 스토리지는 핵심 요소로 확장되었습니다 우리는 정말로 신경 쓰지 않았습니다 그래서 그것은 훌륭하게 일어 섰고 우리는 아마 한계를 넘어서서 그것을 사용할 수 있었다 우리는 확실히 우리가 할 수 있다고 생각했습니다 우리가 한 일은 이것을 용기로 바꾸는 것입니다

그래서 Docker를 사용하여 컨테이너를 만들었습니다 그 자기 부담 임금 노동자를 위해, 우리는 이것을 확장하기 위해 Kubernetes를 사용했습니다 수천 개의 노드로 이동합니다 우리가 그렇게 했으니 시작할 수 있었고, 우리는 최신 모델을 가져올 수 있습니다 우리는 우리의 데이터를 쓸 수 있습니다

우리는 다시 문을 닫고 다시 시작할 수 있습니다 그리고 매번 우리는 최신 버전을 가져 왔습니다 우리는 항상 모델을 조정하고 확신 할 수 있습니다 우리는 최신의 최고의 모델로 새로운 데이터를 생성하고 있습니다 우리가 가지고있는

그래서 원래 우리가했던 것은 원래 우리가 작은 보드 크기로 작성했습니다 그래서 내가 처음에 보여 줬던 원래 도표들 Go가 19 대 19의 보드에서 플레이하고 있었다 그것은 Go의 풀 사이즈 게임입니다 Go는 9 x 9 보드에서도 사용됩니다 그리고이 9 by 9 보드는 훨씬 더 간단합니다

그 모델은 약 250 배 빠릅니다 그래서 우리는 검증을 정렬 할 수있었습니다 더 작은 Go 보드에서 그 더 작은 모델을 사용하여 정확성 그리고 나는 매우 느슨한 정확성을 사용하고 있습니다 그 결과, 기계 학습 귀하의 데이터에서 패턴을 찾는 것이 매우 좋습니다

거기에 넣으려고하지 않은 데이터의 패턴 그것은 당신이 저지른 실수를 은폐하는 데 아주 좋습니다 그래서 우리는 우리의 더 작은 크기의 보드에서 정말 끔찍한 버그가 있었다 우리가 나중에 발견 할 수는 있지만 그 이상은 발견되지 않을 것입니다 우리가 한 다음 일은 – 우리가 이것을 한 후에 작은 보드에 대한 우리의 정확성, 우리는 거룩한 암소, 풀 사이즈 모델을 깨달았습니다

250 배 느려질 것입니다 가속기를 추가해야합니다 그래서 우리는 최소한의 소동으로 GPU를 연결할 수있었습니다 우리는 약 2,100 GPU의 클러스터를 돌리고있었습니다 모든 문제가 전혀없는 단위

Kubernetes에서 GPU를 사용하는 것은 환상적입니다 그것은 우리가 운전자에 대해 걱정할 필요가 없다는 것을 의미합니다 우리는 코드를 변경할 필요가 없었습니다 우리 워크 스테이션에서 실행 된 것은 완벽하게 돌아갑니다 Kubernetes 엔진에

그리고 이것은 꽤 큰 성공이었습니다 그러나 그것은 아직도 조금 느렸다 우리는 벤치 마크 성능 수치를 보았습니다 우리가 치려고했던 것 그래서 AlphaGo 논문의 숫자 그들은 0

4에서 1,600 개의 추론을 수행 할 수 있었다고 설명했다 초 우리는 그보다 약 40 배 더 느리다 파이썬 (Python) 솔루션의 경우에는 괜찮습니다 TPU가 아닌 가속기의 경우 그러나 40 배 느린 것은 40 배 느린 것을 의미합니다

그들은 3 일 만에 500 만 게임을 훈련하고 훈련 할 수있었습니다 그리고 우리가 그것보다 40 배 더 느리다면, 3 개월이 걸리는 걸보고 있습니다 그래서 약간의 도전입니다 이 작업을 더 빠르게 수행 할 방법을 찾아야했습니다 그래서 우리가하기 전에 조금 단계를 밟아 봅시다

GPU에서이 문제를 설정하는 중입니다 나는 이것이 달 달이 걸릴 것이라는 점을 깨닫고있다 나는 진짜로 확인하는 방법을 찾고 싶었다 모든 일이 잘되고있다 그래서 컨테이너로, 그것은 정말로 쉬웠다

내가 일하고있는 일에 변화를주기 위해 실제로 다른 종류의 평가 일치를 실행하려고합니다 Kubernetes 엔진을 사용하는 것은 정말 쉬웠습니다 API는 변형 된 작업을 회전시키고, 그래서 다른 버전의 모델을 테스트 할 수 있습니다 내가 진전하고 있는지 확인해 이것은 정말로 중요한 것이 었습니다

나는 나중에 다시 돌아올거야 그리고 내가 말할 때, 성능 측정, 나는 내 일에 대한 성과를 측정하고있다 그게 내 모델이 실제로 Go를하는 것이 더 좋아 지는지? 그게 진짜 질문입니다 그래서 일찍, 나는 이것이 3 개월이 걸릴 것을 알았다 클라우드 TPU가 개발되는 시점에서 나는 말했습니다

이봐,이게 정말 잘 될지도 몰라 클라우드 TPU에서 실행 해보십시오 클라우드 TPU 팀은 매우 열정적이었습니다 그리고 그들은 말했다, 그래, 물론, 바로 가라 그러나 그들은 훨씬 더 빨라서 내가 원래 가지고 있었던 것을 재평가하는 것이었다

내 파이프 라인 작성 참고로 2,000 개의 GPU를 사용하고있었습니다 몇 세대가 지나서 고의로 어떤 종류의 직접적인 수치 비교도하지 않아야합니다 그러나 파이썬에서 이전에 괜찮 았던 것이 무엇인지 말해 주기만하면됩니다 클라우드 TPU를 사용하여 더 이상 문제가 없습니다

그 코드가 충분히 빨라질 것입니다 이 TPUs를 효과적으로 사용할 수있게 될 것이라면, 나는이 파이프 라인이 어떻게 이루어 졌는지 진지하게 다시 생각할 필요가있다 도망 갈거야 3 달 동안 뭔가를 할 계획이라면, 그리고 지금 당신은 아마 1, 2 주 정도를보고 있습니다 너는 아주 다른 제약이있다

입력 데이터를 사전 처리하는 데 걸리는 시간, 느슨하게 밀어내는 데 얼마나 걸릴 수 있습니다 새로운 모델의 결과 그것은 모든 종류의 일입니다 그래서 우리는 TPUs를 다시 작성해야했습니다 이 코드는 몬테카를로 트리 검색입니다

몬테카를로 트리 검색을위한 짧은 의사 코드입니다 그리고 그 라인에주의를 기울이고 싶습니다 NeuralNetevaluate (leafgame)는 말합니다

국가), 그것은 그것이 갑자기이 모든 것이기 때문에 병행해야했다 그리고 그것은 할 수있는 것보다 훨씬 더 빨리 병렬로 갈 필요가있었습니다 그래서 이것은 부분이었습니다 이 작업을 신속하게 처리 할 수있는 엔진은 우리는 다시 쓸 필요가있었습니다 이것이 단일 스레드 버전에서의 모습입니다

이것은 파이썬 코드가 실제로 무엇에 가깝습니까? 오늘 Minigo에서와 같이 보입니다 TPU에 대한 내용을 다시 작성하여이를 해결했습니다 멀티 스레드 버전으로 내 친구가 자원해서 C ++을 다시 작성했고, 그는 아마 내가 자기 이야기를 말하는 것처럼 가지 않을거야 그러나 그는 완전한 멀티 쓰레드를 작성할 수있었습니다

이행– 문제 없음, 버그 없음, 완전히 다시 쓰는 것, 멀티 스레드 코드, 버그 없음, 경쟁 조건 없음, 그런 문제는 없습니다 그러나 그는 실제로 루프를 증가시키는 것을 잊었다 디버깅하는 데 며칠이 걸리는 잔인한 버그가 남았습니다 그는, 오, 나는 그렇게 나빴어 나는 마치, 당신은 방금 완전한 재 작성을했다

처음에는 버그가 없었던 다중 스레드 코드가있었습니다 그리고 당신은 그 일에 열심히 노력할 것입니다 어쨌든이게 그 모습입니다 우리는 C ++ 포트에서 컨테이너를 만들었습니다 파이썬 엔진을 시작하면, 우리는 다음과 같은 RPC 호출을 할 것입니다

우리 대기열에 모든 노드를 실행하기에 충분한 노드가있었습니다 모델 그리고 이것은 훌륭했습니다 그것은 또한 우리의 C ++ 코드가 더 이상 의존하지 않음을 의미합니다 TensorFlow에 설치 했으므로 건물에 문제가 없었습니다

TensorFlow는 빌드를 훨씬 빠르게 만들었습니다 그것은 꽤 시원하다 그리고 일단 우리가이 엔진을 가지고 있었으면 이제 우리는 배포 사용으로 바뀔 수있다 Kubernetes 엔진에 이전에는 GPU를 사용할 때 배치 API를 사용했습니다

손의 신속한 표시, 사용한 사람 Kubernetes이 방에 들어가기 전에? 멋지다 멋지다 배치 API는 실제로 잘 작동했습니다 2,000 노드로 우리는 몇 가지 흥미로운 제한을 가졌습니다 완료 추적

그리고 우리가 한 일은 귀찮게하지 않았습니다 우리는 일자리를 우리가 무언가를 세운 곳으로 썼다 100,000 개의 완료와 같습니다 그리고 실제로 그렇게 할 것입니다 그것은 약 1,000 년 후에 완공을 버릴 것이다

그것은 그것이 끊임없이 계속 실행된다는 것을 의미했습니다 우리가 원하는 것이 었습니다 완료 – 배치 API로 작성 정말 잘 돌아갔다 다시 해 보다 그것은 우리를위한 재시도 논리를 처리 할 것입니다

그것 모두는 정말로 잘 돌아갔다 그러나 이제 Cloud TPUs를 사용하여 용기가 떨어지는 대가를 치르고 싶다 다시 올라와 그래서 우리는 그것들을 배치로서 장기 실행 작업으로 작성했습니다 그리고이 모든 것이 정말 잘되었습니다

우리는 더 이상 완료를 추적 할 필요가 없었습니다 우리는 이들을 장기간 일자리로 쓰고 있었기 때문에 그래서이 모든 것이 단지 기본적으로 기본적으로 이루어졌습니다 Minigo의 장점 중 하나는 우리는 이것을 시험 할 수 있었다 그래서 Minigo는 전적으로 공개됩니다

GitHub에서 모두 사용할 수 있습니다 이 전체 프로젝트를 통해, 나는 똑같은 길을 따라 가고 있었다 외부 고객이 따를 것입니다 비록 내가 Google 직원이지만, 나는 기본적으로, 똑같은 과정을 겪고 있었다 이 방에있는 누군가는 그들이 그것을 통과하려한다면

그리고 그것은 꽤 좋은 경험이었습니다 솔직히, 나는 더 적은 길을 쳤다 또한이 제품들이 많았지 만 사전 알파 또는 알파 준비 중이었습니다 그리고 그 경험은 솔직히 놀랍습니다 Kubernetes Engine의 클라우드 TPU는 기본적으로 상자 밖으로 일했습니다

내가 말했듯이, GPU 용 Ditto는 드라이버 문제 걱정할 필요조차 없었습니다 그래서 당신이 ML을하거나 가속을 할 생각이라면 Kubernetes Engine에서 컴퓨팅, 나는 기본적으로 그것에 대해 좋은 말을해라 그래서 꽤 좋습니다 Minigo에 대한 간단한 데모를하겠습니다 이 게임을 만드는 방법이 있다고 생각합니다

그러나 나는 그것이 무엇인지 모른다 우리는 거기에 갈 그렇게 보입니다 그래서이 미니고 -이 특별한 게임에 대해 생각해 봅시다 그 작은 크기의 보드입니다

나는 이것이 실제로 CPU에서만 실행되고 있다고 생각한다 노트북에 Chromebook 일 수도 있습니다 그래서 이것은 그 작은 것에서 완전히 무섭지 않고 달리고 있습니다 내가 너에게 말한 Go 사이즈

그리고 그것은 반복되지 않습니다 이것은 불행합니다 하지만 그 변화가 오른쪽 상단에서 고려할 때, 무엇을 그것은 가장 가능성이 큰 움직임이라고 생각한다 왼쪽에서 일어난다 그리고 이것은 꽤 훌륭한 도구입니다

만약 당신이 Go Player라면, 정말로 파고 들어가서 그것에 대해 생각하고있는 것을 보아라 왜 좋아하는지, 좋아하지 않는지 – 꽤 좋아 좋아, 그럼 우리 결과에 대해서 이야기 해 좋아, 그럼 결과는 알았어 그래서 결론을 얘기해

그리고 배운 교훈, 나는 조금 이야기하고 싶다 여기에 우리가 가진 경향에 대해, 이것은 GPU에서 TPU로 이동하고 있습니다이 경우, 이것들은 최신 TPU에 대한 오래된 GPU였습니다 눈을 뜨게되었습니다 우리가 더 많은 일을 할 수있는 능력 기본적으로 같은 양의 전력으로 사용자가 우리의 인센티브를 맞출 수 있음을 의미합니다

클라우드 제공 업체는 최신의 가장 빠른 하드웨어를 사용할 수 있습니다 기본적으로, 우리가 사람들이 이전 버전의 하드웨어를 사용하게하고, 최신 버전의 하드웨어 동일한 와트 수로 더 많은 작업을 수행 할 것입니다 우리가 정말로 당신이 가장 새로운 것을 사용하기를 바랍니다 양철통 이걸로 유지되는 한 우리가이 압력을 가할 것입니다

우리의 코드는 가능한 한 빨리 간다 그리고 이것은 환상적이다 특히, 연구를 할 때, 이러한 솔루션에서 전화를 거는 경우, 너는 실험 할 수 있어야 해 당신이 할 수있는 한 빨리 있을 수도있는 일을 시도 할 수 있어야합니다

다른 방법을 시도하기에는 너무 비싸다 이렇게 성능면에서 가장 좋은 가격을 사용하게하는 성과 당 가격 가장 빠른 것을 사용하고 느린 것을 사용하지 말고, 모델에서 실제로 전화를 걸 수 있음을 의미합니다 우리가 만들고자하는 것, 우리가 정말로 할 수있는 것 우리가가는 방법을 더 빨리 반복 모델을 개발하는 방법에 대한 다양한 아이디어를 테스트 할 수 있습니다 그러나 그것이 의미하는 것은 그 수단입니다 당신은 당신의 파이프 라인이 더 빨라질 수 있도록 계획해야합니다

다시 말하지만, 원래는 몇 달 정도 걸릴거야 그리고 지금, 우리는 그것은 1, 2 주 만에 끝났습니다 그리고 그것은 우리의 핵심 가정들을 얼마나 오래 변화 시켰는지 우리는 다른 단계를 많이해야 할 것입니다 그 파이프 라인에있는 것 같아 계속할 것입니다

그래서 확실히 당신은 그에 따라 계획하고 싶습니다 저것은 구름 가장자리 TPU,이다 작은 UBS 실리콘 껌 우리가 Minigo를 만들려고 붙잡아 라 나는 정말로 그 것이다 흥분 이 개념과 관련하여 파이프 라인이 진행 중입니다

빨리, 우리는 정말로 시도하고 만들고 싶다 우리의 모델은 가축과 비슷하고 애완 동물과 비슷합니다 가축을 가진 너희들은 애완용 유머가 없다 어떤 사람들은 아이디어를 얻고 있습니다 아이디어 컨테이너를 사용하면 정확한 빌드를 재현 할 수 있습니다

실행중인 소프트웨어의 내 서버는 상호 교환 가능하다고 말할 수 있습니다 나는 그들 중 많은 것을 얻을 수있다 나는 그 이름을 말할 필요가 없다 그것은 특별하지 않다 죽거나 내려 가거나 부서지면 크게 문제가되지 않습니다

나는 그것을 재건해야한다 같은 방식으로 우리는 우리의 신경망 모델을 원합니다 그와 같기도합니다 3 개월이 지나면 소유욕이 생깁니다 마찬가지로, 당신은 정말로 어떤 일이 일어나는 것을보고 싶지 않습니다

그러나 하루나 이틀 만에 새로운 것을 만들 수 있다면, 이제 자유롭게 실험하고 시도 할 수있는 자유가 있습니다 소지품 그리고 그 변화를 지킬 수 있다는 것을 의미합니다 훨씬 더 잘 격리되었습니다 몇 달이 걸렸던 GPU에 대한 초기 작업을 통해, 끊임없이 모니터하는 것이 유혹적이었습니다

대시 보드, 시도하고 몇 가지 손잡이를 조정, 여기저기서 다이얼을 돌리고 시도해보십시오 걱정하고 걱정할 필요가 없습니다 그러나 그것은 또한 그 과정의 끝에서, 그 사물의 순서를 어떻게 정확하게 재현 할 수 있을까요? 그게 일어난거야? 정말 힘들다 훨씬 더 반복적이라는 것을 의미합니다 그리고 그것은 꽤 위대합니다

꽤 흥미로운 또 다른 일 여기에 이러한 강화 학습 시스템이 실제로 분산 시스템과 유사합니다 그래서 많은 사람들이 클라우드에서 일한다고 상상해 봅니다 그들은 그 아이디어에 익숙합니다 당신의 개인적으로 잘 행동하는 시스템이 멈춘다는 것을 탠덤에서 잘 행동한다 그리고 그것은 여러 가지 이유로 꽤 흥미 롭습니다

나는 두 가지 방법이 있다고 생각한다 우리가 왜 우리 시스템이 잘못된 일을하는 것 그들 중 하나는 코드에서부터 코드를 볼 수 있습니다 일어날 일을 정확하게 이해하십시오 그리고 다른 방법은 행동에서 오는 것입니다

우리가 볼 수있는 일, 일어나는 일에 대해 생각해야만하는 곳 가설을 생성한다 로드 밸런서가이 작업을 수행하는 경우, 그러면 우리는 이것을 기대할 수 있으며, 나는이 방법으로 그것을 테스트 할 수 있습니다 어쩌면 당신은 단지 그것을 보면서 그것을 해결할 수 없습니다 로드 밸런서 코드와 서버에서 당신은 가설을 생성하고 그것을 테스트해야합니다 그리고 그것들은 두 가지 매우 별개의 단계입니다

나는 그것이 유도 적이거나 연역적이라고 생각합니다 그리고 매우 유사한 방식으로, 신경 네트워크 신경망을 개발하는 것은 똑같은 문제를 가지고있다 우리는 코드 행을 직접 가리킬 수 없다 왜 모델이 결정을 내리는가? 하지만 대신에 다음과 같은 코드를 만들었습니다 그 모델을 만들었습니다

하향식 디버깅 유형 특정 코드를 볼 수 있어야합니다 그리고 무슨 일이 일어나는지 알아 내려고 노력하십시오 그러나 이런 방식으로 보강재 학습 시스템은 실제로 많이 닮았다 분산 시스템의 그리고 디버깅은 프로세스라는 생각 가설 생성, 어떻게 가설을 검증하고 검증하는지 알았어

나는 이것을 했어 나는 이것을 기대했다 이 다른 일이 일어났습니다 – 내 직감에 대한 의미는 무엇입니까? 이 시스템이 어떻게 작동하는지? 알았어 그러니 조금 감싼다 이것의 두 가지 주요 부분이 있습니다

기계 학습 부분 및 소프트웨어 엔지니어링 부분을 포함합니다 그리고 나는이 부분에 초점을 맞추기 위해 노력하고 있습니다 어떻게 90 페타 플롭스에 도달 했습니까? 건강을 어떻게 모니터 했습니까? 어떻게 우리가 필요한 성과를 얻었습니까? 우리가 어떻게 작동하게할까요? 기본적으로 어떤 것도 건드리지 않았습니다 기계 학습 파트의 왜 네트워크는 이런 식으로합니까? 이 상수는 왜 이렇게입니까? 왜 네트워크는 이렇게 구성되어 있습니까? 그 "왜"질문, 그 사람은 꽤 힘들고, 그러나 우리가 정말로 그 소리에 대답 할 수는 없습니다 헛소리를 못하게하십시오

따라서 신경 네트워크가 있다면 기계 학습 알아 내려는 문제, 이 질문에 대한 대답, 분명히 특정 도메인이 될 것입니다 그러나 당신이 말할 때, 좋습니다, 그럼, 어떻게 배치하고 테스트 할 것인가? 이러한 응용 프로그램, 어떻게 내 가설을 테스트 할거야, 거기에 대한 답변은 구름 플랫폼되었습니다 환상적으로 작동합니다 그럼 실제로 작동 한 것들에 대해 조금 이야기 해 봅시다 잘 그래서 저는 작은 Stackdriver 대시 보드를 포함 시켰습니다

우리가 사용한 Stackdriver는 훌륭했습니다 표준 출력에 물건을 던질 수 있습니다 아무 문제없이 그들을 통해 정규식 나는 클라우드 스토리지가 레벨 이상으로 확장하는 방법을 언급했다 우리가 말한거야

그래서 우리 초기 클러스터는 아마 5 만개의 게임을 내놓았습니다 풀 사이즈 모델의 하루 TPUs를 통해 우리는 하루에 백만 개의 게임을 제공합니다 여전히 그들을 다운로드하고 다 처리해야합니다 클라우드 스토리지는 이제 막 챔피언이되었습니다

어떤 시점에서 우리는 통합을 생각하고 있습니다 Cloud Bigtable과 함께하지만 아직 미정입니다 그리고 그동안 Cloud Storage는 방금 – 우리는 단지 그것을 남용합니다 정말 훌륭합니다 내가 언급 한 Kubernetes Engine과 Cloud TPUs는, 기본적으로 상자 밖에서 작동합니다

사용에 관심이 있다면, 그것은 꽤 좋은 경험입니다 – 확실히 가입하십시오, 당신이해야 할 일 TensorBoard 19 – TensorBoard의 최신 버전 TensorBoard 대시 보드를 올바르게 제공 할 수있게 해줍니다 클라우드 스토리지에서 벗어났습니다 클라우드 TPU를 사용하려는 경우, 프로파일 링 도구는 사용하기 쉽습니다

그들은 파고 들어가는 데 유용합니다 TPU에서 최상의 성능을 얻을 수있는 방법 따라서 클라우드 스택을 사용하는 모든 부분 정말 잘 갔다 그 소리들에 관해서는, 나는 Alex Ipran에서이 인용문을 사랑한다 강화 학습은 정말로 어렵습니다

그는이 견적을 가지고 있습니다 무작위로 밝혀지면 내가 그랬는지 모르겠다 아니면 내가 방금 불행했는지 우리는 최첨단 기술에서 이러한 알고리즘을 가지고 있습니다 지금 올바르게 작동하는 기계 학습 다른 임의의 시드를 가진 버전은 솔루션에 집중하면 놀라 울 정도입니다

여기 성공적인 결과가 있습니다 그 시간의 30 % 만 작동합니다 분명히, AlphaGo Zero는 훨씬 더 견고 해 보입니다 그러나 도전의 종류를 지적한다 이 가설들을 시험 할 때, 그리고 반복 및 분리 및 정렬 가능 가설을 세우고 그들이 작동하는지 확인하십시오

이것은 정말 놀라운 견적입니다 생각하고 싶어 개인적으로 나에게 출판 된 논문의 발자취에 DeepMind가 가능한 이유를 알고 있습니다 그들의 논문을 출판했다 나를 위해 훨씬 더 어려울 것이다

좋아, 내가 상상해 보려고 그냥 상상해 보라 그들의 신발에 있었는데, 그 모델에서 예쁜 모델이 나왔습니다 좋지만 큰 것은 아닙니다 그리고 나는 나 자신에게 말한다 음

이 접근법으로 할 수있는 최선인가요? 미지의 세계를 탐험하는 것과 매우 큰 차이가 있습니다 알려진 것을 재현해라 내 경우 엔 천장에 충돌하면 그 천장과 그들이 묘사 한 천장을 비교할 수있다 말하자면, 알았어요, 분명히 버그가 있습니다 반면, 처음으로 새로운 연구를하는 누군가를 위해, 천장이라고 말하면 훨씬 더 힘들어 질거야

또는 버그가 있습니까? 부지런하고 통제 할 수 있어야합니다 당신이 격리 할 수 ​​있는지 확인하십시오 시스템의 각 부분을 확인하고 각 구성 요소가 너가 생각하는 것을하고있다 그런 종류의 의미가 있습니까? 훌륭 하네 그리고 마지막으로, 나는 인용하고 싶다

왜 내가 Go Player로 흥분하는지 이 모든 것들이 마침내 모양을 갖추게되었습니다 나는 AlphaGo 논문 다음에 Minigo를 시작했다 나는 작년의 11 월이라고 생각한다 그 이후로 페이스 북은 오픈 소스를 발표했다 번역

그들은 Tencent 모델을 방금 출시했습니다 그리고 다른 중국 기업들은 다양한 학위를 가지고 출시 한 모델 작업 개방성 그리고 이것들을 갖는 것이 매우 흥미 롭습니다 Leela Zero라는 오픈 소스 프로젝트도 있습니다 완료되었습니다

어디에서 crowdsource하려고 했습니까? 모든 GPU 컴퓨팅이 필요합니다 그리고 그것은 정말 훌륭했습니다 이 모든 사람들은 모두 재현하려고합니다 다양한 양의 성공과 함께 종이 그리고 Go Player로서 정말 멋지 네요

본질적으로 신탁에 접근 할 수 있어야합니다 Go의 게임을하는 것을 생각하는 선수들 대화를 나누면서 누군가와 대화를 나눈다 우리는 Go라는 게임을하는 위대한 속담을 가지고 있습니다 누군가와 함께 사는 것은 1 년 동안 그들과 함께 사는 것과 같습니다 그 경우에, 우리는이 새로운 것을 가지고 있습니다

그것은 우리에게 새로운 창조적 인 아이디어를 말하는 것입니다 우리가 이전에 정말로 이해하지 못했던 따라서 더 많은 것을 배우고 싶다면 Go 게임에 대해 확실히 온라인에서 확인하십시오 더 많은 리소스가 있습니다 그리고, 잘하면, 지금 배우기가 훨씬 쉬워 질 것입니다 우리는 그것을 이해할 수있는 방법이 있습니다

우리는 우리가하는 우리의 움직임에 대한 이야기를 끊으려고 노력합니다 우리가 할 일을 좀 더 쉽게 할 수 있습니다 우리가 파고 들어야 할 더 좋은 도구를 가지고 있다는 것을 이해하십시오 정말 고마워요 그들의 시간을 기부하는 데 도움을 준 여러분 께 감사드립니다

Minigo에서 일하기 그건 Tom, Seth, Brian, Josh입니다 그들 모두는 Minigo를 가능하게 만드는 도구가되었습니다 [음악 재생]