Bỏ qua để đến nội dung

Làm quen công cụ: Google Colab, Kaggle

Sau bài này, bạn sẽ:

  • Hiểu bản chất môi trường tương tác sổ tay (notebook) và kiến trúc máy khách – máy chủ (client – kernel) của Jupyter.
  • Sử dụng thành thạo Google Colab và Kaggle Notebooks để viết code, chạy thử nghiệm và tận dụng GPU miễn phí.
  • Phân biệt lệnh shell (!) và lệnh ma thuật (magic commands % và %%).
  • Nắm vững cách quản lý tệp, hiểu tính chất tạm thời (ephemeral storage) của máy ảo và cách lưu trữ dữ liệu an toàn.

Bài này không cần kiến thức trước. Bạn bắt đầu ngay được.

Khi bắt đầu học trí tuệ nhân tạo (AI), rào cản lớn nhất của người mới học thường không phải là giải thuật, mà là khâu cài đặt môi trường: xung đột phiên bản thư viện Python, cài đặt trình điều khiển GPU (NVIDIA CUDA driver), hay cấu hình bộ nhớ. Nếu máy tính cá nhân của bạn không có card đồ họa rời đủ mạnh, việc huấn luyện một mạng nơ-ron học sâu (deep learning) có thể mất hàng ngày trời.

Để giải quyết vấn đề này, các nền tảng đám mây như Google Colab và Kaggle cung cấp môi trường tính toán hoàn toàn miễn phí trên nền web:

  • Bạn không cần cài đặt bất kỳ phần mềm nào vào máy tính.
  • Máy chủ đám mây đã cài sẵn Python, NumPy, Pandas, Scikit-learn, PyTorch và TensorFlow.
  • Bạn được cấp quyền sử dụng các bộ vi xử lý đồ họa (GPU - Graphics Processing Unit) hiệu năng cao chỉ với vài cú nhấp chuột.

Thay vì phải gõ lệnh trong các file mã nguồn .py dài dằng dặc rồi chạy lại từ đầu mỗi khi sửa lỗi, bạn làm việc trên các sổ tay điện tử (notebooks). Bạn có thể chia nhỏ chương trình thành từng ô, thử nghiệm từng dòng code, xem ngay đồ thị biểu diễn dữ liệu và ghi chú giải thích bên cạnh.

Tệp notebook có đuôi mở rộng .ipynb (Jupyter Notebook Format). Một notebook bao gồm hai thành phần chính:

  1. Giao diện người dùng (Front-end): Trình duyệt web hiển thị các ô văn bản (Markdown cell) và ô mã nguồn (Code cell).
  2. Nhân tính toán (Kernel): Một tiến trình máy chủ chạy ngầm thực thi mã Python và lưu giữ toàn bộ biến, hàm và đối tượng trong bộ nhớ RAM.

Khi bạn bấm chạy (phím tắt Shift + Enter) một ô code, trình duyệt gửi đoạn code đó đến kernel. Kernel tính toán và trả kết quả (văn bản, bảng dữ liệu, biểu đồ) ngược lại màn hình.

Cả hai nền tảng đều dựa trên nền tảng Jupyter nhưng có mục đích sử dụng tối ưu khác nhau:

Đặc tínhGoogle ColabKaggle Notebooks
Nhà cung cấpGoogle ResearchKaggle (thuộc Google)
Phần cứng miễn phíGPU T4, CPU, TPUGPU T4 x2, P100, CPU
Hạn mức GPUHạn mức động theo nhu cầuKhoảng 30 giờ/tuần
Thời gian chạy tối đa12 giờ/phiên (idle 90 phút)9 giờ/phiên (12 giờ khi submit)
Lưu trữ dữ liệuGắn kết trực tiếp Google DriveGắn kèm Kaggle Datasets
Mục đích phù hợp nhấtHọc tập, thử nghiệm nhanh, tạo mẫu ý tưởngTham gia thi đấu dữ liệu, chia sẻ dự án cộng đồng

Trong môi trường notebook, ngoài mã Python thông thường, bạn có thể tương tác trực tiếp với hệ điều hành Linux máy ảo thông qua:

  • Lệnh Shell (!): Cho phép chạy một lệnh hệ thống đơn lẻ. Ví dụ: !pip install transformers để cài thư viện, hoặc !nvidia-smi để kiểm tra thông số card đồ họa GPU.
  • Lệnh Magic theo dòng (% - Line Magic): Tác động lên một dòng duy nhất để thay đổi cấu hình môi trường kernel:
    • %pwd: In đường dẫn thư mục hiện tại.
    • %cd /content/sample_data: Đổi thư mục làm việc của kernel.
    • %time expression: Đo thời gian thực thi của một biểu thức đơn lẻ.
  • Lệnh Magic theo ô (%% - Cell Magic): Tác động lên toàn bộ nội dung của ô đó:
    • %%time: Đo tổng thời gian chạy của cả ô code.
    • %%writefile script.py: Lưu toàn bộ nội dung ô thành một tệp tin trên đĩa.

Bộ nhớ tạm thời và cách giữ dữ liệu

Phần tiêu đề “Bộ nhớ tạm thời và cách giữ dữ liệu”

Máy ảo trên Colab và Kaggle hoạt động theo cơ chế bộ nhớ tạm thời (ephemeral runtime):

  • Ổ đĩa /content (trên Colab) hoặc /kaggle/working (trên Kaggle) chỉ tồn tại trong thời gian phiên làm việc còn hiệu lực.
  • Nếu bạn tắt trình duyệt quá lâu, mạng bị ngắt, hoặc phiên chạm ngưỡng thời gian tối đa, máy ảo sẽ tự động bị hủy và xóa sạch mọi tệp tin vừa tải về hoặc sinh ra.
  • Giải pháp giữ dữ liệu:
    • Trên Colab: Gắn kết tài khoản Google Drive bằng lệnh from google.colab import drive; drive.mount('/content/drive') và lưu file mô hình vào /content/drive/MyDrive/....
    • Trên Kaggle: Bấm nút Save Version để xuất bản notebook và giữ lại tệp đầu ra (output artifacts) lên kho lưu trữ đám mây của Kaggle.

Sơ đồ dưới đây minh họa luồng giao tiếp giữa trình duyệt, máy chủ kernel và các vùng lưu trữ dữ liệu trong một phiên làm việc đám mây:

[ Trình duyệt Web ]
│ (Gõ code, bấm Shift + Enter)
▼
[ Jupyter Server / Kernel (VM) ]
├── Bộ nhớ RAM: Lưu biến, hàm, mô hình đang chạy
├── Bộ tăng tốc GPU: Tính toán ma trận song song
│
├── Ổ đĩa tạm thời (Ephemeral Disk: /content)
│ └─► BỊ XÓA khi ngắt phiên hoặc hết giờ!
│
└── Lưu trữ bền vững (Persistent Storage)
├─► Google Drive (Gắn qua drive.mount)
└─► Kaggle Dataset / Output Versions

Quy trình làm việc chuẩn cho một dự án AI trên đám mây:

  1. Khởi tạo môi trường: Chọn loại máy tính (Runtime →\to Change runtime type →\to T4 GPU).
  2. Nạp dữ liệu: Tải tệp từ nguồn ngoài hoặc liên kết thư mục đám mây.
  3. Thực thi phân tích: Chạy từng ô để khám phá dữ liệu và huấn luyện mô hình.
  4. Lưu trữ kết quả: Xuất tệp trọng số (checkpoint) sang bộ nhớ bền vững trước khi đóng tab.

Các ô dưới đây chạy độc lập. Bạn có thể bấm nút Chạy để thực thi trực tiếp trên trình duyệt bằng môi trường mô phỏng.

Ô thứ nhất minh họa bài đo tốc độ thực thi (benchmark) - nguyên lý nền tảng giúp bạn hiểu vì sao cần đo đếm thời gian tính toán của các tác vụ dữ liệu.

Đo thời gian thực thi thuật toán

import time
# Số lượng phần tử cho bài đo benchmark
n = 100_000
# Cách 1: dùng vòng lặp for thông thường
t0 = time.perf_counter()
total_loop = 0
for i in range(n):
total_loop += i * i
t_loop = time.perf_counter() - t0
# Cách 2: dùng hàm sum dựng sẵn với generator
t0 = time.perf_counter()
total_sum = sum(i * i for i in range(n))
t_sum = time.perf_counter() - t0
# Tỷ lệ tăng tốc giữa hai cách tính
speedup = t_loop / t_sum if t_sum > 0 else 1.0
print(f"Loop sum: {total_loop}")
print(f"Loop time: {t_loop:.5f}s")
print(f"Built-in time: {t_sum:.5f}s")
print(f"Speedup ratio: {speedup:.2f}x")

Lần chạy đầu cần tải Python, khoảng 10 MB.

Kết quả in ra cho thấy cách dùng hàm dựng sẵn (sum với generator) cho tốc độ tính toán tối ưu hơn so với việc tích lũy thủ công bằng vòng lặp for thông thường. Trên Colab, bạn có thể kiểm tra trực tiếp điều này bằng lệnh magic %time.

Ô thứ hai mô phỏng quy trình kiểm tra thư mục làm việc và quản lý tệp trên máy ảo.

Kiểm tra hệ thống tệp và dọn dẹp bộ nhớ

import os
import tempfile
# Mô phỏng thư mục làm việc trong môi trường notebook
work_dir = tempfile.mkdtemp()
data_file = os.path.join(work_dir, "dataset.csv")
# Tạo một tệp dữ liệu mẫu
with open(data_file, "w", encoding="utf-8") as f:
f.write("id,feature,label\n")
f.write("1,0.85,1\n")
f.write("2,0.12,0\n")
# Liệt kê tệp và đo dung lượng lưu trữ
files = os.listdir(work_dir)
file_size = os.path.getsize(data_file)
print(f"Directory: {os.path.basename(work_dir)}")
print(f"Found files: {files}")
print(f"File size: {file_size} bytes")
# Dọn dẹp dữ liệu tạm sau khi xử lý xong
os.remove(data_file)
os.rmdir(work_dir)
print("Storage cleaned up successfully")

Lần chạy đầu cần tải Python, khoảng 10 MB.

Chương trình tạo một tệp dữ liệu giả lập, lấy kích thước tệp và dọn dẹp an toàn. Thói quen kiểm tra kích thước và giải phóng bộ nhớ đĩa là kỹ năng quan trọng khi bạn làm việc với các tập dữ liệu lớn hàng gigabyte trên Colab hay Kaggle.

Câu 1/4 Khi chạy lệnh !cd dataset trong một ô code của Google Colab, thư mục làm việc hiện tại của ô code tiếp theo sẽ như thế nào?
Câu 2/4 Bạn huấn luyện một mô hình trong 2 giờ trên Google Colab và lưu file trọng số model.pt tại /content/model.pt. Sau khi tắt trình duyệt 4 tiếng và mở lại notebook, file đó sẽ ra sao?
Câu 3/4 Trong sổ tay Jupyter Notebook, nếu bạn chạy ô code thứ 3 trước khi chạy ô code thứ 1 (nơi khai báo biến X = 10), điều gì sẽ xảy ra tại ô thứ 3?
Câu 4/4 Điểm khác biệt nổi bật của Kaggle Notebooks so với Google Colab khi làm việc với các bài toán khoa học dữ liệu là gì?

Ý chính:

  • Google Colab và Kaggle cung cấp môi trường tính toán dựa trên sổ tay Jupyter Notebook với GPU miễn phí trên nền tảng đám mây.
  • Sổ tay tách biệt giữa giao diện hiển thị trong trình duyệt và tiến trình tính toán kernel chạy ngầm.
  • Lệnh shell (!) dùng cho các thao tác hệ thống đơn lẻ, trong khi lệnh magic (% và %%) cấu hình và điều khiển phiên làm việc của kernel.
  • Ổ đĩa cục bộ của máy ảo là tạm thời (ephemeral), cần liên kết với Google Drive hoặc xuất bản phiên bản Kaggle để bảo toàn dữ liệu.

Đọc thêm:

Nội dung theo giấy phép CC BY-NC-SA 4.0. Mã nguồn theo giấy phép MIT.Giới thiệu