DEV Community

Laptop Hưng Phát
Laptop Hưng Phát

Posted on • Originally published at technologyspot.vn

Docker vs Virtualenv: Setup Python Trên Laptop AI AMD & Intel

Bài viết gốc tại: TechnologySpot

Khi phát triển dự án Python trên các dòng laptop AI đa nhiệm chạy chip Ryzen AI 9 HX 370 (24 luồng) hay Core Ultra 5 225H (14 luồng), việc tối ưu hóa môi trường phát triển là rất quan trọng để tận dụng tối đa phần cứng mạnh mẽ này. Vậy lập trình viên nên chọn Docker Container hay virtualenv (venv) truyền thống để tối ưu hiệu năng?

Khi Nào Virtualenv Là Đủ Và Khi Nào Docker Xứng Đáng?

virtualenv hoạt động trực tiếp trên hệ điều hành host, không tốn thêm tài nguyên ảo hóa. Nó cực kỳ phù hợp cho các dự án Python thuần túy, script tự động hóa hoặc khi bạn cần tiết kiệm pin và RAM tối đa.

Ngược lại, Docker tạo ra một môi trường cô lập hoàn toàn từ hệ điều hành, thư viện C++ cho đến driver AI (như CUDA hay ROCm). Dù các CPU như Ryzen AI 9 HX 370 có hiệu năng đa luồng vượt trội nhờ 24 luồng xử lý thực tế (đạt 21.761 điểm Cinebench R23 đa nhân như được đánh giá tại TechnologySpot), việc chạy Docker vẫn phải gánh một lượng overhead nhất định từ VM trung gian trên Windows (WSL2) hoặc macOS.

Tiêu chí Virtualenv (venv) Docker Container
Startup Time Tức thì (< 0.1s) 1 - 5 giây (phụ thuộc WSL2/VM)
RAM Overhead ~0 MB (chỉ tốn RAM của app) ~1GB - 2GB base VM + 50-100MB/container
Độ phức tạp Rất thấp, dễ sử dụng Trung bình - Cao
Khả năng đóng gói Kém (dễ lỗi thư viện OS host) Hoàn hảo (chạy nhất quán mọi nơi)

Lệnh khởi tạo nhanh:

  • Với venv: python -m venv .venv && source .venv/bin/activate
  • Với Docker: docker run -it --name python-app -v $(pwd):/app python:3.10-slim bash

Cấu Hình Dev Container Và Sai Lầm Bind Mount Kinh Điển

Để phát triển trực tiếp trong Docker bằng VS Code, ta dùng tính năng Dev Containers. File .devcontainer/devcontainer.json cơ bản để cấu hình môi trường cô lập:

{
  "name": "Python AI Dev",
  "image": "mcr.microsoft.com/devcontainers/python:3.10",
  "customizations": {
    "vscode": {
      "extensions": ["ms-python.python"]
    }
  },
  "postCreateCommand": "pip install -r requirements.txt"
}
Enter fullscreen mode Exit fullscreen mode

Sai lầm phổ biến: Nhiều lập trình viên thường bind mount toàn bộ thư mục dự án chứa cả thư mục ảo hóa của Python (như .venv) hoặc dữ liệu lớn vào container. Trên WSL2 hoặc macOS, cơ chế đồng bộ tập tin qua lại giữa hệ điều hành host và máy ảo cực kỳ chậm, làm nghẽn I/O và giảm hiệu năng CPU nghiêm trọng.

Giải pháp: Chỉ mount mã nguồn cần chỉnh sửa bằng volume mount và giữ các thư mục cài đặt thư viện (site-packages hoặc .venv) hoàn toàn bên trong container. Bạn cũng nên cấu hình file .wslconfig để giới hạn RAM cho WSL2 không vượt quá 50% tổng dung lượng RAM của máy nhằm tránh tràn bộ nhớ khi chạy đa nhiệm nặng.

Top comments (0)