from google.colab import drive
drive.mount('/content/drive')

import os, shutil
drive_cache = "/content/drive/MyDrive/1. PROJECTS/LLM/llama_cpp_build/llama_cpp"
site_pkg = "/usr/local/lib/python3.11/dist-packages/llama_cpp"
 
if os.path.exists(drive_cache):
    print("Đang copy llama_cpp từ Google Drive...")
    shutil.copytree(drive_cache, site_pkg, dirs_exist_ok=True)
else:
    print("Chưa có cache → cài từ pip + CUDA")
    !CMAKE_ARGS="-DGGML_CUDA=on" FORCE_CMAKE=1 pip install llama-cpp-python
    shutil.copytree(site_pkg, drive_cache, dirs_exist_ok=True)

Giải thích:

  • os: làm việc với hệ điều hành (kiểm tra tệp, thư mục,…)
  • shutil: hỗ trợ thao tác sao chép thư mục, tệp.
  • drive_cache: đường dẫn tới thư viện llama_cpp được lưu trữ trên Google Drive.
  • site_pkg: thư mục chứa các gói đã được pip install trong môi trường Python hiện tại. Nếu đã có bản cache trên Drive, thì:
  • Copy thư viện llama_cpp từ Google Drive về thư mục cài đặt Python (site_pkg).
  • dirs_exist_ok=True: cho phép ghi đè lên nếu thư mục đích đã tồn tại. Nếu chưa có cache: sẽ tiến hành cài đặt mới từ pip với CUDA.
!CMAKE_ARGS="-DGGML_CUDA=on" FORCE_CMAKE=1 pip install llama-cpp-python
  • Dùng cú pháp ! (dành cho Colab) để cài llama-cpp-python.
  • CMAKE_ARGSFORCE_CMAKE là biến môi trường yêu cầu:
    • bật hỗ trợ CUDA trong quá trình biên dịch.
    • ép phải build lại từ mã nguồn (do llama_cpp thường build thủ công với ggml).
shutil.copytree(site_pkg, drive_cache, dirs_exist_ok=True)

Sau khi cài xong → sao lưu lại thư viện vào Google Drive để lần sau không cần build lại nữa.

writefile <filename>`: nói với Python rằng **toàn bộ nội dung bên dưới sẽ được ghi vào file có tên** `**<filename>**`.
- Trong trường hợp này, `requirements.txt` là tên file bạn đang tạo, chứa danh sách các thư viện để `pip install`.
```Python
!pip install -q -r requirements.txt
  • r là viết tắt của requirement file. Nó báo cho pip rằng: hãy đọc danh sách các thư viện cần cài đặt từ file **requirements.txt**.
  • q là viết tắt của quiet → chạy ở chế độ yên lặng. Nó ẩn bớt các thông báo chi tiết khi cài, chỉ hiển thị lỗi hoặc thông tin quan trọng.
    • (Nếu muốn rất yên lặng, có thể dùng -qq hoặc -qqq.)

import os
CACHE_DIR = "/content/drive/MyDrive/1. PROJECTS/LLM/model_cache"
os.makedirs(CACHE_DIR, exist_ok=True)
# Cấu hình các biến môi trường để cache transformers & llama.cpp
os.environ["TRANSFORMERS_CACHE"] = CACHE_DIR
os.environ["HF_HOME"] = CACHE_DIR
os.environ["SENTENCE_TRANSFORMERS_HOME"] = CACHE_DIR
os.environ["LLAMA_CPP_CACHE_DIR"] = CACHE_DIR
\#Tạo thư mục chứa file pdf
os.makedirs('/content/drive/MyDrive/1. PROJECTS/LLM/data_pdf', exist_ok=True)
  • Đặt biến CACHE_DIR trỏ tới thư mục lưu cache trong Google Drive
  • Tạo thư mục nếu chưa có.
    • exist_ok=True: nếu thư mục đã tồn tại thì không báo lỗi.
  • os.environ["..."] = CACHE_DIR : là một dictionary đặc biệt trong Python, dùng để truy cập và thiết lập biến môi trường (environment variables) của hệ điều hành trong quá trình chạy chương trình.
    • os.environ như một biến toàn cục hệ thống mà các thư viện hoặc quá trình khác có thể đọc được.
    • Việc gán giá trị vào os.environ["TÊN_BIẾN"] = "giá trị" là đang nói với hệ thống hoặc các thư viện khác rằng: “hãy dùng giá trị này để cấu hình”.