Làm quen công cụ: Google Colab, Kaggle
This content is not available in your language yet.
Mục tiêu
Phần tiêu đề “Mục tiêu”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.
Cần biết trước
Phần tiêu đề “Cần biết trước”This lesson needs nothing before it. You can start right away.
Trực giác
Phần tiêu đề “Trực giá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.
Lý thuyết
Phần tiêu đề “Lý thuyết”Cấu trúc sổ tay Jupyter Notebook
Phần tiêu đề “Cấu trúc sổ tay Jupyter Notebook”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:
- 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).
- 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.
Google Colab vs Kaggle Notebooks
Phần tiêu đề “Google Colab vs Kaggle Notebooks”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ính | Google Colab | Kaggle Notebooks |
|---|---|---|
| Nhà cung cấp | Google Research | Kaggle (thuộc Google) |
| Phần cứng miễn phí | GPU T4, CPU, TPU | GPU T4 x2, P100, CPU |
| Hạn mức GPU | Hạn mức động theo nhu cầu | Khoảng 30 giờ/tuần |
| Thời gian chạy tối đa | 12 giờ/phiên (idle 90 phút) | 9 giờ/phiên (12 giờ khi submit) |
| Lưu trữ dữ liệu | Gắn kết trực tiếp Google Drive | Gắn kèm Kaggle Datasets |
| Mục đích phù hợp nhất | Học tập, thử nghiệm nhanh, tạo mẫu ý tưởng | Tham gia thi đấu dữ liệu, chia sẻ dự án cộng đồng |
Lệnh Shell và Lệnh Magic
Phần tiêu đề “Lệnh Shell và Lệnh Magic”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.
- Trên Colab: Gắn kết tài khoản Google Drive bằng lệnh
Minh họa
Phần tiêu đề “Minh họa”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 VersionsQuy trình làm việc chuẩn cho một dự án AI trên đám mây:
- Khởi tạo môi trường: Chọn loại máy tính (Runtime Change runtime type T4 GPU).
- 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.
- 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.
- 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.
Ví dụ code
Phần tiêu đề “Ví dụ code”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 benchmarkn = 100_000
# Cách 1: dùng vòng lặp for thông thườngt0 = time.perf_counter()total_loop = 0for i in range(n): total_loop += i * it_loop = time.perf_counter() - t0
# Cách 2: dùng hàm sum dựng sẵn với generatort0 = 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ínhspeedup = 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")The first run downloads Python, about 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 osimport tempfile
# Mô phỏng thư mục làm việc trong môi trường notebookwork_dir = tempfile.mkdtemp()data_file = os.path.join(work_dir, "dataset.csv")
# Tạo một tệp dữ liệu mẫuwith 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ý xongos.remove(data_file)os.rmdir(work_dir)print("Storage cleaned up successfully")The first run downloads Python, about 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.
Lỗi hay gặp
Phần tiêu đề “Lỗi hay gặp”Kiểm tra nhanh
Phần tiêu đề “Kiểm tra nhanh”Tóm tắt và đọc thêm
Phần tiêu đề “Tóm tắt và đọc thêm”Ý 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:
- Google Colab Team (2024). Google Colaboratory Frequently Asked Questions. Tài liệu giải đáp chi tiết về giới hạn tài nguyên và kiến trúc máy ảo Colab.
- Kaggle Documentation (2024). Kaggle Notebooks Documentation. Hướng dẫn chính thức về quản lý tài nguyên GPU, chia sẻ dataset và tham gia giải đấu.
- Project Jupyter (2024). Jupyter Notebook Documentation. Tài liệu chuẩn của tổ chức mã nguồn mở Jupyter về định dạng
.ipynbvà cơ chế kernel.
Your browser is blocking storage. Your progress will be lost when you reload the page.
Content licensed under CC BY-NC-SA 4.0. Code under the MIT license.About