Try   HackMD

Panduan Menggunakan Sistem DGX-1 pada Tokopedia-UI AI Center


Informasi:

Harap untuk menggunakan satu GPU saja dengan cara berikut:

  • Jupyter (dijalankan sebelum import torch/tensorflow)
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '1'
  • Python (command)
    CUDA_VISIBLE_DEVICES=1 python ...<command-untuk-running> ...

Dalam hal ini, 1 adalah nomor GPU. Silakan sesuaikan dengan pilihan GPU yang diinstruksikan atau yang masih available. Anda bisa mengecek utilisasi memori GPU dengan command nvidia-smi.


Cara mendapat akses ke DGX-1:

  1. Isi form pada tautan berikut https://s.id/FormRequestDGX1AIC. (Form sedang tidak dapat menerima data baru).
    Alternatifnya bisa dengan mengirim email ke aicenter-request@cs.ui.ac.id dan cc ke email dosen pembimbing dengan mengisi form penelitian dengan contoh sebagai berikut:

INFO DOSEN
Nama Dosen Pembimbing: Prof. Albus Dumbledore

INFO MAHASISWA
Nama Mahasiswa: Harry Potter
NPM: 1234567890
Program Studi: MIK
S1/S2/S3: S2
No WhatsApp: 081234567890
*Catatan: Jika terdapat lebih dari satu mahasiswa pada penelitian yang sama, harap cantumkan juga info mahasiswa lainnya dalam kelompok tersebut.

INFO PENELITIAN
Topik/Deskripsi Singkat Penelitian: Klasifikasi Pneumonia Pada Data Chest X-Ray Images
Programming Language: Python
Libraries: sklearn, pandas, numpy, keras, tensorflow
Ukuran Dataset (berapa MB atau GB): 1.2GB
Periode Penggunaan DGX-1: 1 September - 31 December 2020

  1. Tim AI Center akan memeriksa form penelitian yang telah dikirimkan ke email AI Center
  2. Jika permintaan akses diterima oleh tim AI Center, admin akan mengirimkan file config untuk mengakses DGX1

Notes:

  1. Mohon hanya menggunakan 1 GPU saja. Jika butuh menggunakan lebih dari 1 GPU harus menghubungi admin terlebih dahulu.
  2. Setelah selesai melakukan training, harap lakukan clear session atau shutdown Jupyter Notebook untuk mengosongkan memory GPU setelah training.
  3. [PENTING] Jangan lupa untuk melakukan backup data secara berkala demi mengantisipasi kehilangan data jika server down!
  4. Jika melakukan publikasi ilmiah, penelitian yang menggunakan DGX-1 wajib mencantumkan ACKNOWLEDGEMENT Tokopedia-UI AI Center of Excellence.

1. Persiapan

Pastikan kubectl telah terinstall pada laptop pengguna.

Langkah-langkah instalasi:

Konfigurasi kubectl untuk mengakses Kubernetes cluster

  • Pengguna akan mendapatkan sebuah file kubeconfig yang telah dibuat oleh admin.
  • Pada akhir langkah instalasi, pengguna akan memiliki direktori .kube dalam direktori home pada sistem operasi masing-masing. Langkah-langkah berikut bisa disesuaikan dengan sistem operasi masing-masing pengguna
    1. Memeriksa versi kubectl
      kubectl version
    2. Masuk ke direktori home
      Windows: cd %USERPROFILE%
      Ubuntu: cd ~
    3. Membuat direktori .kube
      mkdir .kube
    4. Masuk ke dalam direktori .kube
      cd .kube
    5. Masukkan file config yang sudah diberikan di dalam .kube, kemudian rename file jadi config

2. Membuat Pod Baru (setelah Juni 2022)

Dalam Kubernetes, Pod adalah satu execution unit terkecil dalam suatu cluster. Pod bisa dianggap sebagai sebuah virtual machine (VM) yang dijalankan pada suatu server berskala besar.

Pengguna DGX-1 dapat menjalankan programnya dengan membuat pod terlebih dahulu. Berikut adalah langkah untuk menjalankan pod:

  1. Pastikan Anda telah menerima kubeconfig dan file contoh yaml pod (umumnya dengan penamaan [nama-anda]-pod.yaml) dari email AI Center atau dari tim admin.
  2. Pada file contoh pod, terdapat potongan kode sebagai berikut.
    ​​​​...
    ​​​​  containers:
    ​​​​    - image: [url-image]
    ​​​​...
    
    Silakan ubah [url-image] dengan framework deep learning yang akan digunakan. Selengkapnya bisa dilihat pada situs https://catalog.ngc.nvidia.com/.
    Contoh:
    • Tensorflow 1 21.08: nvcr.io/nvidia/tensorflow:21.08-tf1-py3
    • Tensorflow 2 21.08: nvcr.io/nvidia/tensorflow:21.08-tf2-py3
    • PyTorch 21.08: nvcr.io/nvidia/pytorch:21.08-py3
  3. Jalankan command sebagai berikut untuk membuat pod dengan file yaml sebelumnya:
    kubectl apply -f [nama-anda]-pod.yaml
  4. Cek status pod dengan command kubectl get pods. Contoh outputnya adalah sebagai berikut:
    ​​​​> kubectl get pods
    ​​​​NAME       READY   STATUS    RESTARTS   AGE
    ​​​​test-pod   1/1     Running   0          50m
    
    Jika statusnya sudah Running, Anda sudah bisa mulai menggunakan podnya.

3. Running Jupyter Notebook

Berikut adalah panduan jika Anda menggunakan Jupyter Notebook untuk melakukan eksperimen atau eksekusi program:

  1. Masuk ke dalam pod dengan perintah
    kubectl exec -it [nama-pod] -- /bin/bash
  2. Setelah masuk ke dalam pod, jalankan command
    jupyter notebook
    Anda akan memperoleh output seperti berikut:
    ​​​root@test-pod:/workspace# jupyter notebook
    ​​​...
    ​​​[I 04:47:03.345 NotebookApp] http://hostname:8888/?token=[token-notebook]
    ​​​[I 04:47:03.345 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
    ​​​[C 04:47:03.349 NotebookApp]
    
    ​​​     To access the notebook, open this file in a browser:
    ​​​         file:///root/.local/share/jupyter/runtime/nbserver-1018-open.html
    ​​​     Or copy and paste this URL:
    ​​​         http://hostname:8888/?token=[token-notebook]
    
    
    Simpan atau copy [token-notebook] yang terdapat dari output tersebut.
  3. Untuk meninggalkan proses di background, tekan Ctrl-Z, lalu jalankan bg. Command ini bertujuan untuk minimize Jupyter Notebook di terminal atau command prompt.
  4. Keluar dari pod dengan perintah exit
  5. Lakukan port-forwarding untuk menghubungkan laptop/komputer Anda dengan Jupyter Notebook di dalam pod demgan perintah berikut:
    kubectl port-forward [nama_pod] [local_port]:[kubernetes_port]
    Notes:
    • [kubernetes_port] untuk Jupyter Notebook umumnya 8888.
    • [local_port] bebas ditentukan oleh pengguna antara 0-65535.
  6. Buka port di dalam browser
    localhost:[local_port]
  7. Masukkan token yang muncul pada perintah nomor 2
  8. Anda sudah bisa mengakses notebook yang ada di server DGX-1.

4. Upload/Download File dari Pod

Berdasarkan beberapa pengalaman pengguna, kami menganjurkan untuk melakukan upload/download file melalui Jupyter Notebook karena cenderung lebih stabil.

Cara lainnya, Anda bisa mengunduh menggunakan kubectl sebagai berikut:

  • Menyalin file dari local ke pod menggunakan kubectl cp
    kubectl cp [local_path] [nama_pod]:[remote_path]
  • Menyalin file dari pod ke local
    kubectl cp [nama_pod]:[remote_path] [local_path]

Pencabutan Akses

  1. Jika sudah selesai masa akses sesuai dengan form penelitian yang diisi sebelumnya, maka user harus segera melakukan backup data penelitian yang ada di DGX1
  2. Admin akan mengonfirmasi apakah data sudah selesai ter-backup semua
  3. Admin akan menghapus akses user dan file config user tidak akan bisa digunakan kembali

Pertanyaan lain terkait penggunaan DGX-1 pada Tokopedia-UI AI Center bisa dikirimkan melalui email aicenter-request@cs.ui.ac.id serta CC ke douglas.raevan11@ui.ac.id