Kết nối Colab với VSCode

1. Google Colab

Việc huấn luyện (hay còn gọi là train) một mô hình Deep Learning cần xử lý lượng phép tính rất nhiều. Để cải thiện tốc độ tính toán, người ta dùng GPU (Graphics Processing Unit) thay cho CPU (Central Processing Unit). Vì GPU cho phép xử lý phép tính song song với nhiều core sẽ nhanh hơn nhiều so với CPU. Tuy nhiên giá của GPU thì khá đắt để mua hoặc thuê server có GPU đối với các bạn sinh viên. Thế nên Google đã cung cấp Google Colab miễn phí có GPU phục vụ cho mục đích nghiên cứu.

Colab đã cài sẵn các thư viện Deep Learning phổ biến hiện nay như Pytorch, Tensorflow, Keras,… Chúng ta cũng có thể cài thêm thư viện nếu cần. Ngoài ra, Google còn hỗ trợ liên kết Colab với Google Drive để truy cập dữ liệu.

2. Tận dụng tối đa Colab

Colab rất tiện lợi, tuy nhiên nó vẫn có một số hạn chế khiến chúng ta chưa thể khai thác hết. Nếu bạn thích kiểu tổ chức project dưới dạng các file module Python thì Colab không làm được điều này. Trên Colab ta chỉ có thể thao tác được trên cell của Notebook. Vậy thử tưởng tượng xem, nếu project rất lớn và nó nhồi nhét tất cả chỉ trong một file Notebook sẽ như thế nào. Tất nhiên vẫn có thể tạo các module Python rồi upload lên Google Drive, nhưng sẽ rất bất tiện khi chỉnh sửa.

Chúng ta có thể sử dụng command line trên cell của Colab, tuy nhiên cảm giác thật tù túng, không được tự do như khi làm việc với command line trên terminal. Việc di chuyển, sao chép các file trên Colab cũng rất khó, phải sử dụng command line hoặc script Python để thực hiện, chứ hoàn toàn không thể kéo thả được.

Nếu đã từng sử dụng Tensorboard của Google để theo dõi quá trình huấn luyện của mô hình trên local, thì việc sử dụng Tensorboard trên Colab cũng rất khó khăn.

Hoặc lí do như mình thôi, mình chỉ thích lập trình trên VSCode, vì VSCode có rất nhiều extension hỗ trợ cho việc nghiên cứu của mình. Notebook trên VSCode có thể xem được giá trị của một biến ma trận nè. Coi được giá trị, kiểu dữ liệu của biến bất kì nè. Sử dụng terminal tích hợp sẵn trên VSCode nè. Intellisense và Autocomplete của VSCode thông mình hơn của Colab nè. Nhưng khổ là mình dùng macOS không chơi được GPU Nvidia, mỗi lần train là máy nóng với lại chậm chạp.

Thế là mình liền có một suy nghĩ, dù gì máy mà Colab cung cấp chỉ là một cái máy tính Linux, vậy hoàn toàn có thể remote nó thông qua SSH. SSH là một giao thức điều khiển từ xa cho phép người dùng kiểm soát và chỉnh sửa server từ xa qua Internet. Sau đây mình sẽ hướng dẫn mọi người điều khiển máy tính của Colab thông qua SSH và sử dụng trên VSCode nhé.

3. Cài đặt

Hiện tại mình chỉ mới tìm hiểu sử dụng qua VSCode thôi, mình chưa thử trên các text editor khác. Vì VSCode có extension Remote Development giúp lập trình trên container của Docker, qua WSL trên Windows và SSH. Mình không biết là các text editor khác có hỗ trợ Remote Development như vậy hay không.

Bước 1. Việc đầu tiên là phải có VSCode, link tải.

Bước 2. Tải thêm extension Remote Development SSH, link tải.

Sau đó, chúng ta sẽ lên Google Colab để khởi tạo một thiết bị với GPU hoặc TPU. Nếu là người lập trình với Pytorch thì sử dụng GPU, còn nếu Tensorflow/Keras thì chọn GPU hoặc TPU nhé. Và đừng quên liên kết với Google Drive, việc lưu và đọc dữ liệu trên Google Drive rất cần thiết đấy.

Bước 3. Khởi tạo thiết lập SSH trên Colab bằng các câu lệnh sau trên cell.

! pip install colab_ssh
from colab_ssh import launch_ssh
launch_ssh('your_ngrok_token', 'password')

Cần thay your_ngrok_token bằng token ngrok của bản thân và password là mật khẩu tự đặt. Vì colab_ssh lúc này sẽ forward địa chỉ máy ảo Colab qua một tên miền của ngrok. Nếu chưa có tài khoản, hãy đăng kí miễn phí và lấy token ở đây.

image1

Sau khi điền token, password và chạy ta sẽ nhận một configuration như trên.

Bước 4. Copy configuration đó vào SSH configuration file trên máy local.

Có thể mở nhanh SSH configuration file trên VSCode, bằng cách nhấn vào biểu tượng Remote trên VSCode. image2

Chọn Open SSH Configuration File… image3

Chọn file config đầu tiên. image4

Rồi dán thiết lập trên Colab vào file. image5

Bước 5. Kết nối máy ảo Colab này trên VSCode.

Chọn Connect to Host… image6

Chọn tên máy ảo Colab image7

Tiếp đó nhấn Xác nhận và nhập Password đã đặt trước đó image8 image9

Sau khi kết nối thành công, tên máy ảo Colab sẽ hiện như hình

image10

Tuy nhiên đó chỉ mới là phần kết nối, ta cần mở một folder để có thể làm việc trên đó, tương tự như trên local. Lần lượt chọn Open Folder và chọn đường dẫn /content/.

image11 image12

Bây giờ trải nghiệm thành quả nào. Chúng ta hoàn toàn có thể thao tác các file Python, file Notebook, thậm chí là cả terminal. Các file trên Google Drive mà đã liên kết trước đó cũng hiện trên Explorer.

image13 image14 image15

Mình đã thử train trên một data với 465 batch, batch size là 32 và tốc độ train là gần 30s. Việc train trên GPU của Colab nhanh hơn rất nhiều so với việc train trên CPU của máy local. image15

4. Tổng kết

Như vậy là mình đã hướng dẫn xong cho mọi người cách điều khiển máy ảo Colab trên VSCode rồi, bây giờ mọi người có thể thoả thích nghiên cứu, tận dụng mọi sức mạnh của Colab trên VSCode.

Tuy nhiên, vẫn có một số nhược điểm là ta vẫn phải duy trì tab Colab trên trình duyệt và phải thiết lập lại SSH mỗi khi sử dụng. Nhưng đó không phải vấn đề lớn đúng không. Hẹn gặp lại mọi người trong những bài viết tiếp theo.

@hieunguyen1053

5. Tham khảo

  1. Remote SSH: Tips and Tricks
  2. Colab_SSH

Discussion and feedback