Datasets documentation
Quản lý bộ nhớ đệm
Quản lý bộ nhớ đệm
Khi bạn tải xuống một bộ dữ liệu từ Hugging Face, dữ liệu sẽ được lưu trữ cục bộ trên máy tính của bạn.
Các tệp từ Hugging Face được lưu trữ như bình thường trong bộ nhớ đệm huggingface_hub, mặc định nằm tại ~/.cache/huggingface/hub.
Xem tài liệu về bộ nhớ đệm Hub để biết thêm chi tiết và cách thay đổi vị trí của nó.
Bộ nhớ đệm Hub cho phép 🤗 Datasets tránh việc tải lại các tệp dữ liệu từ Hugging Face mỗi khi bạn sử dụng chúng.
🤗 Datasets cũng có bộ nhớ đệm riêng để lưu trữ các bộ dữ liệu đã chuyển đổi sang định dạng Arrow (định dạng được sử dụng bởi các đối tượng Dataset).
Hướng dẫn này tập trung vào bộ nhớ đệm của 🤗 Datasets và sẽ cho bạn thấy cách:
- Thay đổi thư mục cache.
- Kiểm soát cách một tập dữ liệu được tải từ bộ nhớ đệm.
- Dọn dẹp các tệp cache trong thư mục.
- Bật hoặc tắt bộ nhớ đệm.
Thư mục bộ nhớ đệm
Thư mục cache mặc định của 🤗 Datasets là ~/.cache/huggingface/datasets. Thay đổi vị trí cache bằng cách đặt biến môi trường shell HF_HOME thành một thư mục khác:
$ export HF_HOME="/path/to/another/directory"Ngoài ra, bạn có thể đặt biến môi trường HF_DATASETS_CACHE để chỉ kiểm soát thư mục cache dành riêng cho datasets:
$ export HF_DATASETS_CACHE="/path/to/datasets_cache"⚠️ Điều này chỉ áp dụng cho các tệp được ghi bởi thư viện datasets (ví dụ: tệp Arrow và chỉ mục).
Nó không ảnh hưởng đến các tệp được tải xuống từ Hugging Face Hub (chẳng hạn như mô hình, tokenizer hoặc nguồn dữ liệu thô), vốn được đặt trong ~/.cache/huggingface/hub theo mặc định và được kiểm soát riêng thông qua biến HF_HUB_CACHE:
$ export HF_HUB_CACHE="/path/to/hub_cache"💡 Nếu bạn muốn di chuyển tất cả các bộ nhớ đệm của Hugging Face — bao gồm cả datasets và các tệp tải từ hub — hãy sử dụng biến HF_HOME thay thế:
$ export HF_HOME="/path/to/cache_root"Điều này dẫn đến:
- bộ nhớ đệm datasets →
/path/to/cache_root/datasets - bộ nhớ đệm hub →
/path/to/cache_root/hub
Những phân biệt này đặc biệt hữu ích khi làm việc trong các môi trường dùng chung hoặc hệ thống tệp mạng (ví dụ: NFS).
Xem vấn đề #7480 để thảo luận về cách người dùng gặp phải các vị trí cache không mong đợi khi HF_HUB_CACHE không được đặt cùng với HF_DATASETS_CACHE.
Khi bạn tải một bộ dữ liệu, bạn cũng có tùy chọn thay đổi vị trí lưu bộ nhớ đệm cho dữ liệu. Thay đổi tham số cache_dir thành đường dẫn mong muốn:
>>> from datasets import load_dataset
>>> dataset = load_dataset('username/dataset', cache_dir="/path/to/another/directory/datasets")Chế độ tải xuống
Kiểm soát việc tái sử dụng các tệp nguồn đã tải xuống và các bộ dữ liệu đã chuẩn bị trong load_dataset() bằng tham số download_mode. Mặc định, 🤗 Datasets sẽ tái sử dụng chúng nếu chúng tồn tại. Để tải lại các tệp nguồn và xây dựng lại bộ dữ liệu, hãy sử dụng force_redownload:
>>> from datasets import load_dataset
>>> dataset = load_dataset('rajpurkar/squad', download_mode='force_redownload')Tham khảo DownloadMode để xem danh sách đầy đủ các chế độ tải xuống.
Tệp đệm
Dọn dẹp các tệp cache Arrow trong thư mục bằng Dataset.cleanup_cache_files():
# Returns the number of removed cache files
>>> dataset.cleanup_cache_files()
2Bật hoặc tắt bộ nhớ đệm
Nếu bạn đang sử dụng một tệp được lưu trong bộ nhớ đệm cục bộ, hệ thống sẽ tự động tải lại bộ dữ liệu kèm theo các phép biến đổi trước đó mà bạn đã áp dụng lên bộ dữ liệu. Tắt hành vi này bằng cách đặt tham số load_from_cache_file=False trong Dataset.map():
>>> updated_dataset = small_dataset.map(add_prefix, load_from_cache_file=False)Trong ví dụ trên, 🤗 Datasets sẽ thực thi hàm add_prefix trên toàn bộ tập dữ liệu một lần nữa thay vì tải tập dữ liệu từ trạng thái trước đó.
Tắt bộ nhớ đệm trên phạm vi toàn cục bằng disable_caching():
>>> from datasets import disable_caching
>>> disable_caching()Khi bạn tắt bộ nhớ đệm, 🤗 Datasets sẽ không còn tải lại các tệp được lưu trong bộ nhớ đệm khi áp dụng các phép biến đổi lên datasets. Mọi phép biến đổi bạn áp dụng lên dataset của mình sẽ cần được áp dụng lại.
Nếu bạn muốn sử dụng lại một bộ dữ liệu từ đầu, hãy thử đặt tham số
download_modetrong load_dataset() thay vào đó.
Cải thiện hiệu suất
Việc tắt bộ nhớ đệm và sao chép bộ dữ liệu trong bộ nhớ sẽ tăng tốc các thao tác trên bộ dữ liệu. Có hai tùy chọn để sao chép bộ dữ liệu trong bộ nhớ:
Đặt
datasets.config.IN_MEMORY_MAX_SIZEthành một giá trị khác không (tính bằng byte) phù hợp với bộ nhớ RAM của bạn.Đặt biến môi trường
HF_DATASETS_IN_MEMORY_MAX_SIZEthành một giá trị khác không. Lưu ý rằng phương pháp đầu tiên có độ ưu tiên cao hơn.