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ệnllama_cppđược lưu trữ trên Google Drive.site_pkg: thư mục chứa các gói đã đượcpip installtrong môi trường Python hiện tại. Nếu đã có bản cache trên Drive, thì:- Copy thư viện
llama_cpptừ 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àillama-cpp-python. CMAKE_ARGSvàFORCE_CMAKElà 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_cppthường build thủ công vớiggml).
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.txtrlà viết tắt của requirement file. Nó báo chopiprằng: hãy đọc danh sách các thư viện cần cài đặt từ file**requirements.txt**.qlà 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
-qqhoặc-qqq.)
- (Nếu muốn rất yên lặng, có thể dùng
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_DIRtrỏ 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.environnhư 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”.