Khởi tạo DVC và tích hợp với Git
Thực hiện lệnh khởi tạo DVC trong thư mục dự án đã có sẵn Git. Bước này tạo ra thư mục .dvc chứa cấu hình và file .gitignore tự động để bảo vệ các file cấu hình.
Mục đích: Thiết lập môi trường DVC cơ bản và đảm bảo Git không lưu trữ các file cấu hình nội bộ của DVC.
Kết quả mong đợi: Xuất hiện thư mục .dvc và file .gitignore cập nhật trong thư mục hiện tại.
cd /path/to/your/project
dvc init
git add .dvc .gitignore
git commit -m "Init DVC"
Tạo cấu trúc dữ liệu mẫu để thực hành
Tạo một dataset giả lập lớn (100MB) để mô phỏng việc quản lý dữ liệu thực tế. Chúng ta sẽ tạo file này trực tiếp trong thư mục dự án.
Mục đích: Có dữ liệu thực tế để thực hiện các thao tác add, commit và track.
Kết quả mong đợi: File data/raw/dataset.csv được tạo với kích thước khoảng 100MB.
mkdir -p data/raw
dd if=/dev/urandom of=data/raw/dataset.csv bs=1M count=100
Cấu hình Remote Storage (S3 và Local)
Kịch bản 1: Cấu hình Remote là thư mục Local (Local Storage)
Thiết lập một thư mục trên máy chủ làm kho chứa dữ liệu (remote storage) cho DVC. Đây là cách nhanh nhất để test trên môi trường đơn máy (single-node).
Mục đích: Liên kết DVC với một vị trí lưu trữ cụ thể để lưu các file dữ liệu lớn ngoài Git.
Kết quả mong đợi: DVC được cấu hình để đẩy (push) dữ liệu vào thư mục /mnt/dvc-storage.
mkdir -p /mnt/dvc-storage
dvc remote add -d storage /mnt/dvc-storage
Kịch bản 2: Cấu hình Remote là AWS S3 (Cloud Storage)
Cấu hình DVC để sử dụng AWS S3 bucket làm remote storage. Bạn cần có access_key và secret_key đã được tạo sẵn trong AWS IAM.
Mục đích: Chuẩn bị cho môi trường production nơi dữ liệu cần được lưu trữ trên Cloud với độ tin cậy cao.
Kết quả mong đợi: DVC ghi nhận remote tên là s3-storage trỏ đến bucket my-dvc-bucket.
export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
dvc remote add -d s3-storage s3://my-dvc-bucket
Verify cấu hình Remote
Liệt kê các remote đã cấu hình để đảm bảo DVC nhận diện đúng kho chứa dữ liệu.
Mục đích: Xác minh cấu hình trước khi thực hiện thao tác push dữ liệu.
Kết quả mong đợi: Hiển thị tên remote (default) và đường dẫn tương ứng.
dvc remote list
Thực hành Add, Commit và Track Dataset
Quản lý file dữ liệu với DVC
Sử dụng lệnh dvc add để đưa file dataset vào quản lý của DVC. DVC sẽ nén file lớn thành một hash và lưu vào remote, thay thế file gốc bằng file .dvc nhẹ.
Mục đích: Chuyển dữ liệu lớn khỏi Git (tránh làm nặng repository) nhưng vẫn giữ được bản ghi theo dõi phiên bản.
Kết quả mong đợi: File data/raw/dataset.csv biến mất khỏi thư mục, thay vào đó là data/raw/dataset.csv.dvc và .gitignore cập nhật.
dvc add data/raw/dataset.csv
Commit thay đổi vào Git
Cam kết các file .dvc và .gitignore mới tạo vào Git. Đây là bước bắt buộc để DVC biết về file dữ liệu đó.
Mục đích: Lưu lại "tham chiếu" (pointer) đến dữ liệu vào lịch sử Git.
Kết quả mong đợi: Git commit thành công với thông tin về file dữ liệu.
git add data/raw/dataset.csv.dvc .gitignore
git commit -m "Add dataset v1"
Đẩy dữ liệu lên Remote Storage
Sử dụng lệnh dvc push để truyền tải dữ liệu thực tế từ local workspace lên remote storage đã cấu hình.
Mục đích: Lưu trữ dữ liệu thực tế ngoài Git để khi đồng nghiệp clone repo, họ có thể tải về dữ liệu này.
Kết quả mong đợi: Dữ liệu 100MB được truyền tải vào thư mục /mnt/dvc-storage hoặc S3 bucket.
dvc push
Verify trạng thái dữ liệu
Sử dụng lệnh dvc status để kiểm tra xem dữ liệu local đã đồng bộ với remote chưa.
Mục đích: Đảm bảo dữ liệu đã được lưu trữ an toàn trên remote.
Kết quả mong đợi: Thông báo Everything is up to date.
dvc status
Quản lý phiên bản và Rollback dữ liệu
Tạo phiên bản dữ liệu mới (Dataset v2)
Giả lập việc cập nhật dữ liệu (append thêm dữ liệu mới vào file) và tạo phiên bản mới.
Mục đích: Mô phỏng quy trình DataOps khi dữ liệu thay đổi theo thời gian.
Kết quả mong đợi: File dữ liệu có kích thước lớn hơn (khoảng 200MB), hash mới được tạo.
dd if=/dev/urandom of=data/raw/dataset.csv bs=1M count=100 status=none
dvc add data/raw/dataset.csv
git add data/raw/dataset.csv.dvc
git commit -m "Update dataset to v2"
dvc push
Rollback về phiên bản cũ (Dataset v1)
Thực hiện rollback dữ liệu về phiên bản trước đó bằng cách checkout commit cũ của Git. DVC tự động khôi phục file dữ liệu tương ứng với hash trong file .dvc của commit đó.
Mục đích: Khôi phục dữ liệu về trạng thái cũ khi phát hiện lỗi trong dữ liệu mới.
Kết quả mong đợi: File data/raw/dataset.csv quay về kích thước 100MB (v1).
git log --oneline
# Xác định hash commit của "Add dataset v1"
git checkout -- data/raw/dataset.csv.dvc
dvc checkout
Verify kết quả Rollback
Kiểm tra kích thước file và nội dung file .dvc để xác nhận phiên bản đã được khôi phục chính xác.
Mục đích: Xác minh tính toàn vẹn của dữ liệu sau khi rollback.
Kết quả mong đợi: File dataset.csv có kích thước ~100MB và nội dung file .dvc khớp với commit v1.
ls -lh data/raw/dataset.csv
cat data/raw/dataset.csv.dvc
Điều hướng series:
Mục lục: Series: Xây dựng nền tảng DataOps với DVC, MLflow và Kubernetes cho vòng đời AI
« Phần 2: Quản lý dữ liệu phiên bản với DVC
Phần 3: Tích hợp DVC vào quy trình huấn luyện ML »