|
12 | 12 | { |
13 | 13 | "attachments": {}, |
14 | 14 | "cell_type": "markdown", |
15 | | - "id": "7e90b29d", |
| 15 | + "id": "a358045c", |
16 | 16 | "metadata": {}, |
17 | 17 | "source": [ |
18 | | - "# Content\n", |
19 | | - "* [Overview](#Overview)\n", |
20 | | - " * [Model Architecture](#Model-Architecture)\n", |
21 | | - " * [Optimizations](#Optimizations)\n", |
22 | | - " * [Performance](#Performance)\n", |
23 | | - "* [Getting Started](#Getting-Started)\n", |
24 | | - " * [1. Environment Setup](#1.-Environment-Setup)\n", |
25 | | - " * [2. Workflow Prepare](#2.-Workflow-Prepare)\n", |
26 | | - " * [3. Data Prepare](#3.-Data-Prepare)\n", |
27 | | - " * [4. Train](#4.-Train)" |
28 | | - ] |
29 | | - }, |
30 | | - { |
31 | | - "cell_type": "markdown", |
32 | | - "id": "60ba275a", |
33 | | - "metadata": {}, |
34 | | - "source": [ |
35 | | - "## MiniGo" |
| 18 | + "## MiniGo DEMO" |
36 | 19 | ] |
37 | 20 | }, |
38 | 21 | { |
| 22 | + "attachments": {}, |
39 | 23 | "cell_type": "markdown", |
40 | | - "id": "b004c1af", |
| 24 | + "id": "0ed0530e", |
41 | 25 | "metadata": {}, |
42 | 26 | "source": [ |
43 | 27 | "MiniGo is an opensource minimalist Go engine modeled after AlphaGo Zero, which is a system that learns how to play Go at a superhuman level given only the rules of the game.\n", |
|
50 | 34 | "Reference: https://www.newyorker.com/science/elements/how-the-artificial-intelligence-program-alphazero-mastered-its-games" |
51 | 35 | ] |
52 | 36 | }, |
| 37 | + { |
| 38 | + "attachments": {}, |
| 39 | + "cell_type": "markdown", |
| 40 | + "id": "7e90b29d", |
| 41 | + "metadata": {}, |
| 42 | + "source": [ |
| 43 | + "# Content\n", |
| 44 | + "* [Overview](#Overview)\n", |
| 45 | + " * [Model Architecture](#Model-Architecture)\n", |
| 46 | + " * [Optimizations](#Optimizations)\n", |
| 47 | + " * [Performance](#Performance)\n", |
| 48 | + "* [Getting Started](#Getting-Started)\n", |
| 49 | + " * [1. Environment Setup](#1.-Environment-Setup)\n", |
| 50 | + " * [2. Workflow Prepare](#2.-Workflow-Prepare)\n", |
| 51 | + " * [3. Data Prepare](#3.-Data-Prepare)\n", |
| 52 | + " * [4. Train](#4.-Train)" |
| 53 | + ] |
| 54 | + }, |
53 | 55 | { |
54 | 56 | "attachments": {}, |
55 | 57 | "cell_type": "markdown", |
|
59 | 61 | "# Overview\n", |
60 | 62 | "## Model Architecture\n", |
61 | 63 | "### Overall train loop architecture of MiniGo\n", |
62 | | - "<img src=\"./img/minigo_model_arch.png\" width=\"800\"/><figure>MiniGo Model Architecture</figure>\n", |
| 64 | + "<img src=\"./img/minigo_model_arch.png\" width=\"600\"/><figure>MiniGo Model Architecture</figure>\n", |
63 | 65 | "\n", |
64 | 66 | "### Deep network architecture based on residual blocks\n", |
65 | | - "<img src=\"./img/minigo_nn_arch.png\" width=\"800\"/><figure>Neural Network Architecture</figure>\n", |
| 67 | + "<img src=\"./img/minigo_nn_arch.png\" width=\"600\"/><figure>Neural Network Architecture</figure>\n", |
66 | 68 | "\n", |
67 | 69 | "### MCTS architecture (Select->Expand->Evaluate->Backup/Backpropagation)\n", |
68 | | - "<img src=\"./img/minigo_mcts_arch.png\" width=\"800\"/><figure>Monte Carlo Tree Search in MiniGo</figure>" |
| 70 | + "<img src=\"./img/minigo_mcts_arch.png\" width=\"600\"/><figure>Monte Carlo Tree Search in MiniGo</figure>" |
69 | 71 | ] |
70 | 72 | }, |
71 | 73 | { |
|
283 | 285 | ] |
284 | 286 | }, |
285 | 287 | { |
| 288 | + "attachments": {}, |
286 | 289 | "cell_type": "markdown", |
287 | 290 | "id": "92f794fe", |
288 | 291 | "metadata": {}, |
|
292 | 295 | "Remark:\n", |
293 | 296 | "* Use rsync to synchronize signal, trained model, and mcts generated datset\n", |
294 | 297 | "* Enable numa binding to fully utilize all physical cores in the cluster\n", |
295 | | - "<img src=\"./img/minigo_optimized_system_arch.JPG\" width=\"800\"/><figure>Optimized MiniGo System Architecture</figure>\n", |
| 298 | + "<img src=\"./img/minigo_optimized_system_arch.JPG\" width=\"600\"/><figure>Optimized MiniGo System Architecture</figure>\n", |
296 | 299 | "\n", |
297 | 300 | "### Enable early stop during the train loop to leverage fast converge\n", |
298 | 301 | "Remark:\n", |
|
311 | 314 | "** num_readouts=600\n", |
312 | 315 | "** fastplay_readouts=60\n", |
313 | 316 | "* MCTS performance without finetune:\n", |
314 | | - "<img src=\"./img/mcts_baseline_speed.JPG\" width=\"800\"/><figure>Baseline MCTS</figure>\n", |
| 317 | + "<img src=\"./img/mcts_baseline_speed.JPG\" width=\"600\"/><figure>Baseline MCTS</figure>\n", |
315 | 318 | "* MCTS performance with finetune:\n", |
316 | | - "<img src=\"./img/mcts_tuned_speed.JPG\" width=\"800\"/><figure>Finetuned MCTS</figure>\n" |
| 319 | + "<img src=\"./img/mcts_tuned_speed.JPG\" width=\"600\"/><figure>Finetuned MCTS</figure>\n" |
317 | 320 | ] |
318 | 321 | }, |
319 | 322 | { |
|
324 | 327 | "source": [ |
325 | 328 | "## Performance\n", |
326 | 329 | "\n", |
327 | | - "<img src=\"./img/minigo_perf.png\" width=\"900\"/>\n", |
| 330 | + "<img src=\"./img/minigo_perf.png\" width=\"600\"/>\n", |
328 | 331 | "\n", |
329 | 332 | "* Distributed training with HW scaling delivered 3.57 speedup from 1 node to 4 nodes\n", |
330 | 333 | "* Parallel selfplay and enable early stop delivered 2.50x speedup, and 8.92x speedup over baseline\n", |
|
364 | 367 | "metadata": {}, |
365 | 368 | "outputs": [], |
366 | 369 | "source": [ |
| 370 | + "# Noted: MiniGo is only runnable with baremetal env, so we won't provide docker option\n", |
367 | 371 | "%%bash\n", |
368 | 372 | "# prepare model codes\n", |
369 | 373 | "bash workflow_prepare_minigo.sh\n", |
|
484 | 488 | "metadata": {}, |
485 | 489 | "source": [ |
486 | 490 | "## 4. Train\n", |
| 491 | + "Noted: Below performance result is using sample dataset and small iterations to demonstrate its function. The actual performance result please refers to the [performance section](#performance).\n", |
| 492 | + "\n", |
487 | 493 | "Edit config file to control SDA process" |
488 | 494 | ] |
489 | 495 | }, |
|
0 commit comments