Lewati ke konten utama

Sistem Terdistribusi dan TPU

Keberhasilan AlphaGo bukan hanya kemenangan algoritma, tetapi juga kemenangan rekayasa. Untuk melatih AI Go yang melampaui manusia dalam waktu yang wajar, diperlukan sistem terdistribusi yang dirancang dengan cermat dan dukungan hardware khusus.

Artikel ini akan menganalisis secara mendalam arsitektur sistem di balik AlphaGo, termasuk alur pelatihan, arsitektur inferensi, MCTS paralel, dan peran kunci TPU.


Gambaran Arsitektur Pelatihan

Arsitektur Pelatihan AlphaGo Asli

AlphaGo asli (versi yang mengalahkan Lee Sedol) memiliki pelatihan yang dibagi menjadi beberapa tahap, setiap tahap menggunakan konfigurasi sumber daya yang berbeda:

Arsitektur Pelatihan AlphaGo Zero

AlphaGo Zero sangat menyederhanakan alur pelatihan, menggunakan satu loop pelatihan end-to-end:

Keunggulan arsitektur ini:

  1. Pembelajaran berkelanjutan: Self-play dan Training berjalan bersamaan, tidak perlu menunggu
  2. Efisiensi sumber daya: Semua sumber daya melakukan pekerjaan yang berguna
  3. Iterasi cepat: Network segera digunakan untuk menghasilkan data baru setelah diperbarui

Self-play Workers

Pembagian Tugas

Self-play Workers bertanggung jawab melakukan self-play dengan network terkuat saat ini, menghasilkan data pelatihan.

KonfigurasiAlphaGo Zero
Jumlah WorkerPuluhan
Per Worker1-4 TPU
MCTS per pertandingan1600 simulasi
Dihasilkan per hari~100.000 pertandingan

Alur Kerja

Alur kerja setiap Self-play Worker:

while True:
# 1. Download bobot network terbaru
network = download_latest_checkpoint()

# 2. Lakukan beberapa pertandingan self-play
for game in range(batch_size):
positions = []
board = EmptyBoard()

while not board.is_terminal():
# Jalankan MCTS
mcts = MCTS(network, board)
policy = mcts.search(num_simulations=1600)

# Pilih langkah
action = sample(policy)

# Catat
positions.append((board.state, policy))

# Mainkan langkah
board = board.play(action)

# 3. Dapatkan hasil pertandingan
result = board.get_result()

# 4. Upload data
upload_to_replay_buffer(positions, result)

Load Balancing

Beberapa Worker memerlukan load balancing:

  • Sinkronisasi network: Semua Worker menggunakan versi network yang sama
  • Keseimbangan data: Pastikan data dari berbagai Worker semua digunakan
  • Penanganan error: Kegagalan satu Worker tidak mempengaruhi keseluruhan pelatihan

Training Workers

Pembagian Tugas

Training Workers bertanggung jawab mengambil sampel data dari Replay Buffer dan melatih neural network.

KonfigurasiAlphaGo Zero
Jumlah Worker1-4
Per Worker4 TPU
Batch Size2048 (512 per TPU)
Langkah pelatihanPuluhan ribu per hari

Pelatihan Terdistribusi

Pelatihan skala besar menggunakan Data Parallelism:

Setiap TPU memproses mini-batch berbeda, menghitung gradien lokal, kemudian mengagregasi untuk memperbarui parameter global.

Update Sinkron vs. Asinkron

Metode UpdateKelebihanKekurangan
SinkronStabil, dapat direproduksiWorker perlu menunggu yang paling lambat
AsinkronThroughput tinggiGradien mungkin usang

AlphaGo Zero menggunakan update sinkron untuk memastikan stabilitas pelatihan.


Peran TPU

Apa itu TPU?

TPU (Tensor Processing Unit) adalah akselerator yang dirancang khusus oleh Google untuk deep learning:

KarakteristikTPUGPUCPU
Tujuan desainOperasi matriksParalel umumKomputasi umum
PresisiDioptimalkan FP16/BF16FP32/FP16FP64/FP32
Konsumsi dayaRelatif rendahLebih tinggiPaling tinggi
LatensiRendahSedangTinggi

Arsitektur TPU

Inti TPU adalah MXU (Matrix Multiply Unit):

MXU dapat menjalankan 16K operasi multiply-add per siklus, ini sangat penting untuk perkalian matriks neural network.

Mengapa AlphaGo Membutuhkan TPU?

Bottleneck komputasi AI Go ada di inferensi neural network:

OperasiPersentase
Forward pass neural network~95%
Operasi tree MCTS~4%
Lainnya~1%

Setiap langkah MCTS memerlukan 1600 inferensi neural network. Throughput tinggi TPU membuat ini menjadi mungkin.

Evolusi Penggunaan TPU

VersiTraining TPUInference TPU
AlphaGo Lee50 GPU48 TPU (v1)
AlphaGo Master4 TPU (v2)4 TPU (v2)
AlphaGo Zero4 TPU (v2)4 TPU (v2) (dapat diperluas)

Jumlah TPU yang digunakan AlphaGo Zero berkurang drastis, ini berkat arsitektur yang lebih efisien dan versi TPU yang lebih baru.


MCTS Paralel dan Virtual Loss

Tantangan Paralelisasi

Implementasi standar MCTS adalah serial:

for i in range(num_simulations):
1. Selection: Pilih dari root ke bawah
2. Expansion: Ekspansi leaf node
3. Evaluation: Evaluasi neural network
4. Backup: Propagasi balik pembaruan

Tetapi evaluasi neural network adalah operasi batch yang ramah GPU/TPU. Bagaimana membuat beberapa simulasi berjalan bersamaan?

Leaf Parallelization

Cara paralel paling sederhana: jalankan beberapa simulasi lengkap secara bersamaan, gabungkan hasilnya di akhir.

Masalah: Setiap simulasi dimulai dari root, akan berulang kali menjelajahi jalur yang sama.

Virtual Loss

DeepMind mengadopsi teknik virtual loss untuk mengimplementasikan Tree Parallelization.

Konsep Dasar

Ketika sebuah thread sedang menjelajahi node tertentu, sementara menurunkan nilai node tersebut, membuat thread lain memilih jalur lain.

UCB normal: Q(s,a) + c * P(s,a) * sqrt(N(s)) / (1 + N(s,a))

Setelah ditambah virtual loss:
(Q(s,a) * N(s,a) - v * n_virtual) / (N(s,a) + n_virtual) + c * P(s,a) * sqrt(N(s)) / (1 + N(s,a) + n_virtual)

Di mana:

  • n_virtual adalah jumlah thread yang sedang menjelajahi node tersebut
  • v adalah nilai virtual loss (biasanya 1 atau nilai sesuai win rate)

Alur Operasi

Waktu T1:
Thread 1 memilih jalur A → B → C
Node C mendapat virtual loss -1

Waktu T2:
Thread 2 memilih jalur A → B → D (karena C "dihukum")
Node D mendapat virtual loss -1

Waktu T3:
Thread 1 selesai evaluasi, perbarui nilai aktual C, hapus virtual loss
Thread 3 sekarang mungkin memilih C (jika nilai aktualnya cukup baik)

Efek Virtual Loss

AspekEfek
Diversitas eksplorasiMemaksa eksplorasi jalur berbeda
Efisiensi batchDapat mengevaluasi beberapa leaf node secara bersamaan
KonvergensiVirtual loss akhirnya ditimpa nilai riil, tidak mempengaruhi konvergensi

Evaluasi Neural Network Batch

Melalui virtual loss, dapat mengumpulkan beberapa leaf node yang menunggu evaluasi, melakukan batch inference:

Efisiensi batch inference TPU jauh lebih tinggi daripada inferensi satu per satu, ini membuat MCTS paralel menjadi mungkin.


Arsitektur Inferensi

Konfigurasi Saat Pertandingan

Arsitektur inferensi AlphaGo dalam pertandingan resmi:

VersiKonfigurasi Hardware
AlphaGo Fan176 GPU
AlphaGo Lee48 TPU + beberapa server
AlphaGo Master4 TPU
AlphaGo Zero4 TPU (dapat diperluas)

Alur Inferensi Terdistribusi

Alur inferensi saat pertandingan (contoh AlphaGo Lee):

Manajemen Waktu Berpikir

Strategi manajemen waktu AlphaGo:

PosisiWaktu berpikirJumlah MCTS
Pembukaan (ada joseki)Lebih pendek~10.000
Tengah permainan (kompleks)Lebih panjang~100.000
Posisi sederhanaLebih pendek~5.000
ByoyomiTetap~1.600

Lebih banyak simulasi MCTS biasanya berarti kualitas langkah yang lebih baik.


Komunikasi dan Sinkronisasi

Format Data

Format transmisi data pelatihan:

message TrainingExample {
// State papan (17 × 19 × 19)
repeated float board_planes = 1;

// Hasil pencarian MCTS (362)
repeated float mcts_policy = 2;

// Hasil pertandingan (1 = pihak saat ini menang, -1 = pihak saat ini kalah)
float game_result = 3;
}

Kebutuhan Bandwidth Jaringan

Aliran dataUkuranFrekuensi
Sampel pelatihan~10 KB/sampelRibuan sampel per detik
Bobot network~200 MBBeberapa kali per jam
Pesan kontrol< 1 KBTerus-menerus

Total kebutuhan bandwidth: ~100 Mbps (jaringan internal cukup)

Penanganan Kegagalan

Penanganan kegagalan sistem terdistribusi:

Jenis kegagalanCara penanganan
Worker matiRestart, lanjutkan dengan checkpoint terbaru
Jaringan terputusBuffer data, lanjutkan transfer setelah reconnect
TPU gagalOtomatis beralih ke TPU cadangan
Data rusakVerifikasi kemudian buang, generate ulang

Analisis Biaya

Estimasi Biaya Hardware

Estimasi biaya pelatihan AlphaGo Zero dengan harga Google Cloud TPU:

Sumber dayaJumlahHarga/jamTotal/hari
TPU v2 Pod4~$32~$3.000
VM memori tinggiBeberapa~$5~$500
Penyimpanan10 TB~$0.02/GB~$200
Jaringan-Termasuk-

Sekitar 3.700perhari,pelatihanlengkap(40hari)sekitar3.700 per hari**, pelatihan lengkap (40 hari) sekitar **150.000.

Catatan: Ini adalah estimasi 2017, DeepMind sebagai anak perusahaan Google mungkin memiliki diskon internal.

Perbandingan dengan Pelatihan Manusia

AspekAlphaGo ZeroPemain Go profesional manusia
Mencapai level profesional2 hari10-15 tahun
Biaya pelatihan~$7.500Jutaan (biaya sekolah, biaya hidup, biaya kesempatan)
Biaya berkelanjutanListrikBiaya hidup
Dapat direplikasiReplikasi sempurnaTidak dapat direplikasi

Tentu saja, perbandingan ini tidak sepenuhnya adil—manusia belajar lebih dari sekadar Go dalam proses belajar Go.

Biaya Inferensi

Biaya inferensi pertandingan resmi:

KonfigurasiBiaya per pertandingan
48 TPU (AlphaGo Lee)~$500
4 TPU (AlphaGo Zero)~$50
GPU tunggal (KataGo)~$1

Biaya inferensi turun drastis seiring kemajuan teknologi.


Evolusi Teknologi

Dari AlphaGo ke AlphaZero

AspekAlphaGo LeeAlphaGo ZeroAlphaZero
Training TPU50+ GPU → TPU4 TPU4 TPU
Inference TPU48 TPU4 TPU4 TPU
MCTS/langkah~100.000~1.600~800
Waktu pelatihanBerbulan-bulan40 hariBerjam-jam hingga berhari-hari

Peningkatan efisiensi sekitar 100 kali lipat.

Dampak pada Komunitas Open Source

Arsitektur AlphaGo menginspirasi banyak proyek open source:

ProyekKarakteristik
Leela ZeroPelatihan terdistribusi komunitas, mereplikasi AlphaGo Zero
KataGoPelatihan efisien GPU tunggal, melampaui AlphaGo Zero
ELF OpenGoOpen source Facebook, menggunakan PyTorch
MinigoOpen source Google, menggunakan TensorFlow

Proyek-proyek ini memungkinkan peneliti biasa juga bisa melatih AI Go yang kuat.


Korespondensi Animasi

Konsep inti dalam artikel ini dan nomor animasi:

NomorKonsepKorespondensi Fisika/Matematika
🎬 C9MCTS paralelMasalah banyak benda
🎬 E9Pelatihan terdistribusiKomputasi terdistribusi
🎬 C5Virtual lossPotensial tolak
🎬 D15Batch inferenceKomputasi tervektorisasi

Bacaan Lanjutan


Referensi

  1. Silver, D., et al. (2017). "Mastering the game of Go without human knowledge." Nature, 550, 354-359.
  2. Jouppi, N., et al. (2017). "In-Datacenter Performance Analysis of a Tensor Processing Unit." ISCA 2017.
  3. Dean, J., et al. (2012). "Large Scale Distributed Deep Networks." NeurIPS 2012.
  4. Chaslot, G., et al. (2008). "Parallel Monte-Carlo Tree Search." CIG 2008.
  5. Segal, R. (2010). "On the Scalability of Parallel UCT." CIG 2010.