Bỏ qua điều hướng
CÔNG TY CỔ PHẦN GIẢI PHÁP CÔNG NGHỆ HQG
Giai đoạn 3 · Môi trườngCơ bản

Môi trường Python cho AI: uv hoặc conda, PyTorch đúng bản CUDA, flash-attention, bitsandbytes

Tạo môi trường Python sạch bằng uv hoặc conda, cài PyTorch khớp bản CUDA, kiểm tra torch.cuda.is_available(), cài flash-attention, bitsandbytes và ghim phiên bản để cả nhóm tái lập được.

Khoảng 3 phút đọcCập nhật: 09/20267 bước
Mục tiêu

Có môi trường Python độc lập, PyTorch nhận GPU, thư viện huấn luyện LLM cài đúng và có file khoá phiên bản.

Dành cho ai
  • Kỹ sư AI, nhà nghiên cứu chạy trực tiếp trên máy chủ
  • Sinh viên, nhóm R&D mới bắt đầu với GPU
Yêu cầu
  • Máy có GPU NVIDIA, driver đã cài
  • Không bắt buộc CUDA Toolkit trừ khi biên dịch extension
  • nvidia-smi chạy được
  • Quen dòng lệnh Linux
Mục lục bài

Driver, CUDA Toolkit và wheel PyTorch khác nhau thế nào

Thành phầnNằm ở đâuKhi nào quan trọng
Driver NVIDIAHệ điều hành máy chủLuôn cần; phải đủ mới cho CUDA runtime mà PyTorch dùng
CUDA runtimeĐi kèm wheel PyTorch (các gói nvidia-* trong pip)Chọn wheel cuXXX tương ứng; không cần cài Toolkit riêng
CUDA Toolkit (nvcc)/usr/local/cudaChỉ khi biên dịch extension như flash-attention, DeepSpeed op

Lưu ý: Dòng "CUDA Version" trong nvidia-smi là bản CUDA cao nhất driver hỗ trợ, không phải bản đã cài.

Các bước thực hiện

Tiến độ của bạn
0/7

Tiến độ chỉ lưu trên trình duyệt này.

  1. Bước 1: Tạo môi trường bằng uv (khuyến nghị)

    Bash
    curl -LsSf https://astral.sh/uv/install.sh | sh
    source ~/.bashrc   # hoặc mở lại terminal để có lệnh uv
    mkdir -p ~/llm-lab && cd ~/llm-lab
    uv venv --python 3.12 .venv
    source .venv/bin/activate
    python --version

    uv tải được cả trình thông dịch Python, cài gói nhanh và tương thích lệnh pip qua uv pip.

  2. Bước 2: Hoặc dùng conda (Miniforge)

    Bash
    wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
    bash Miniforge3-Linux-x86_64.sh -b -p $HOME/miniforge3
    $HOME/miniforge3/bin/conda init bash
    source ~/.bashrc
    conda create -n llm python=3.12 -y
    conda activate llm

    Cảnh báo: PyTorch đã ngừng phát hành gói qua kênh conda riêng. Trong môi trường conda, cài PyTorch bằng pip theo lệnh ở bước kế tiếp.

  3. Bước 3: Cài PyTorch đúng bản CUDA

    Mở trang "Get Started" của PyTorch, chọn Linux → Pip → bản CUDA, rồi chép lệnh. Ví dụ với wheel CUDA 12.8:

    Bash
    # Với uv
    uv pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128
    
    # Với pip trong conda
    pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128

    Mẹo: Chỉ số cu128 là ví dụ. Chọn bản mà driver của bạn hỗ trợ và mà PyTorch đang phát hành — danh sách thay đổi theo từng phiên bản PyTorch.

  4. Bước 4: Kiểm tra PyTorch nhận GPU

    check_gpu.py
    import torch
    
    print("torch", torch.__version__, "| CUDA runtime", torch.version.cuda)
    print("cuda available:", torch.cuda.is_available(), "| GPU:", torch.cuda.device_count())
    for i in range(torch.cuda.device_count()):
        print(i, torch.cuda.get_device_name(i))
    
    x = torch.randn(2048, 2048, device="cuda", dtype=torch.float16)
    print("matmul ok:", (x @ x).float().abs().mean().item())
    print("bf16 supported:", torch.cuda.is_bf16_supported())
    Bash
    python check_gpu.py
  5. Bước 5: Cài thư viện huấn luyện LLM

    Bash
    uv pip install transformers accelerate datasets peft trl bitsandbytes sentencepiece
    python -m bitsandbytes

    python -m bitsandbytes in thông tin chẩn đoán, giúp phát hiện sớm việc thư viện không tìm thấy CUDA.

  6. Bước 6: Cài flash-attention (tuỳ chọn)

    FlashAttention-2 yêu cầu GPU đời mới được liệt kê trong README của dự án. Nếu không có wheel dựng sẵn khớp phiên bản, pip sẽ biên dịch từ mã nguồn — cần CUDA Toolkit và mất khá lâu.

    Bash
    uv pip install ninja packaging wheel
    # Giới hạn số job biên dịch để không cạn RAM
    MAX_JOBS=4 uv pip install flash-attn --no-build-isolation
    python -c "import flash_attn; print(flash_attn.__version__)"

    Lưu ý: Không cài được flash-attn vẫn huấn luyện được: dùng attn_implementation="sdpa" (attention tích hợp sẵn trong PyTorch).

  7. Bước 7: Ghim phiên bản để tái lập

    Bash
    uv pip freeze > requirements.lock.txt
    # Máy khác, cùng bản Python:
    uv pip install -r requirements.lock.txt --index-url https://download.pytorch.org/whl/cu128 --extra-index-url https://pypi.org/simple
    • Ghi kèm phiên bản driver (nvidia-smi) và hệ điều hành vào README dự án.
    • Không nâng torch, transformers, trl, peft lẻ tẻ giữa chừng một đợt huấn luyện.
    • Với dự án dài hạn, cân nhắc đóng gói thành image Docker (xem bài Docker & GPU).

Kiểm tra thành công

Bash
python -c "import torch, transformers, peft, trl; print(torch.cuda.is_available(), torch.version.cuda, transformers.__version__, peft.__version__, trl.__version__)"

Thành công khi dòng đầu in True, bản CUDA runtime không phải None, và các thư viện import không lỗi.

Lỗi thường gặp & cách sửa

torch.cuda.is_available() trả về False

Nguyên nhân thường gặp: Cài nhầm wheel CPU (torch.version.cuda = None), driver quá cũ, hoặc biến CUDA_VISIBLE_DEVICES đang ẩn GPU.

Bash
python -c "import torch; print(torch.__version__, torch.version.cuda)"
echo "CUDA_VISIBLE_DEVICES=$CUDA_VISIBLE_DEVICES"
nvidia-smi

Nếu torch.version.cudaNone: gỡ torch và cài lại với --index-url bản CUDA.

The NVIDIA driver on your system is too old

Nguyên nhân thường gặp: Wheel PyTorch dùng CUDA runtime mới hơn khả năng driver.

Cài wheel PyTorch với bản CUDA thấp hơn, hoặc nâng driver.

flash_attn: undefined symbol khi import

Nguyên nhân thường gặp: flash-attn được biên dịch với một bản torch khác bản đang cài.

Bash
uv pip uninstall flash-attn
MAX_JOBS=4 uv pip install flash-attn --no-build-isolation --no-cache
Biên dịch flash-attn làm máy treo hoặc bị kill

Nguyên nhân thường gặp: Biên dịch song song quá nhiều job, cạn RAM.

Giảm MAX_JOBS (ví dụ 2), đóng tiến trình khác, hoặc dùng image NGC có sẵn thư viện đã biên dịch.

Bước tiếp theo

Nguồn chính chủ

Lệnh, tên gói và tham số thay đổi theo phiên bản. Trước khi chạy trên máy thật, hãy kiểm tra phiên bản mới nhất tại trang chính chủ:

Giới hạn của bài

  • Chỉ số wheel cu128 và bản Python 3.12 là ví dụ; tổ hợp được hỗ trợ thay đổi theo từng bản phát hành.
  • Bài không đề cập GPU AMD (ROCm) hay Apple Silicon.
Cần người dựng hệ thống cùng?

Kỹ sư HQG khảo sát, lên cấu hình, lắp đặt và bàn giao hạ tầng AI chạy được thật.