Hệ thống quản lý phiên bản dữ liệu
(dvc.org)- Data Version Control là một bộ công cụ theo mô hình tương tự Git để quản lý dữ liệu như quản lý mã nguồn, giúp các nhóm dữ liệu, AI/ML và khoa học dữ liệu áp dụng các thực hành kỹ thuật phần mềm
- Với hạ tầng AI/ML và dữ liệu quy mô lớn, lakeFS đảm nhiệm nhu cầu này, hướng tới việc xử lý kho đối tượng đa phương thức và data lake ở quy mô petabyte trong môi trường vận hành AI phức tạp và dữ liệu lớn
- Với các dự án khoa học dữ liệu quy mô nhỏ, phần mở rộng Git của DVC phù hợp hơn, cho phép từng nhà khoa học dữ liệu đưa quản lý phiên bản dữ liệu vào quy trình làm việc với mức overhead thấp
- DVC được cung cấp miễn phí dưới dạng mã nguồn mở và cũng có tiện ích DVC for VS Code; kho lưu trữ GitHub hiển thị 15.713 sao
- Khi cộng đồng DVC gia nhập lakeFS family, bạn cũng có thể xem riêng phần phân định vai trò giữa lakeFS và DVC cùng các FAQ liên quan
Vai trò của Data Version Control
- Data Version Control theo đuổi mục tiêu “quản lý dữ liệu theo cách quản lý mã nguồn”
- Thông qua mô hình tương tự Git, công cụ này giúp các nhóm dữ liệu, AI/ML và khoa học dữ liệu tận dụng các thực hành tốt nhất của kỹ thuật phần mềm
- Các trường hợp sử dụng được chia thành hai nhánh lớn
- Nhóm hạ tầng AI/ML và dữ liệu
- Quy trình làm việc cục bộ và các dự án khoa học dữ liệu quy mô nhỏ
Đối tượng của từng sản phẩm và cách bắt đầu
- lakeFS là hạ tầng quản lý phiên bản dữ liệu dành cho các nhóm AI doanh nghiệp và kỹ thuật dữ liệu
- Nhắm đến môi trường vận hành AI phức tạp và dữ liệu lớn
- Xử lý kho đối tượng đa phương thức và data lake ở quy mô petabyte
- Có các liên kết bắt đầu gồm Get started with lakeFS và Book a Demo
- DVC là phần mở rộng Git dành cho từng nhà khoa học dữ liệu
- Hướng tới quản lý phiên bản dữ liệu dễ dùng cho các dự án khoa học dữ liệu quy mô nhỏ
- Có thể áp dụng vào quy trình khoa học dữ liệu với overhead tối thiểu
- Liên kết bắt đầu là Get started with DVC
- Có thể dùng trong VS Code thông qua tiện ích DVC for VS Code
- Cộng đồng DVC đã gia nhập lakeFS family; các tài liệu liên quan gồm lakeFS and DVC và FAQs
- Kho GitHub của DVC là treeverse/dvc, và trên trang hiển thị 15.713 sao
1 bình luận
Ý kiến trên Hacker News
Trong 5 năm qua, tôi đã dùng DVC cho hầu hết các dự án; ưu điểm là nó hoạt động giống Git
Nếu các nhà khoa học hiểu branch, commit và diff thì họ cũng có thể hiểu DVC. Nhược điểm cũng là nó hoạt động giống Git, vì trên thực tế nhiều nhà khoa học thường không hiểu rõ hoặc không dùng branch, commit và diff. Điểm hay nhất là về cơ bản nó buộc bạn phải tuân theo Ten Simple Rules for Reproducible Computational Research. Trong các nhóm tôi từng làm việc, tính tái lập là một thách thức lớn
Các nhà nghiên cứu biết Git là gì và biết nó có giá trị, nhưng họ nghĩ việc học mất quá nhiều thời gian và muốn tiến nhanh. Vì những nhà nghiên cứu như vậy, tôi bắt đầu tạo một công cụ tên là Calkit(https://github.com/calkit/calkit) nhằm đơn giản hóa và tích hợp Git với DVC. Tôi muốn thuyết phục họ rằng làm việc theo cách có thể tái lập về lâu dài sẽ nhanh hơn, và nhờ đó công sức của họ có thể được dùng trực tiếp hơn để thúc đẩy cả lĩnh vực phát triển nhanh hơn
Tôi là maintainer kiêm tác giả của DVC, rất vui khi thấy DVC lên trang nhất
Tôi có thể trả lời các câu hỏi về DVC và dự án chị em DataChain https://github.com/iterative/datachain. DataChain là một công cụ quản lý phiên bản dữ liệu với các giả định hơi khác, có sẵn biến đổi dữ liệu và không cần sao chép tệp
Chúng tôi có 10 năm tệp Parquet từ hơn 300 topic Kafka, và hiện đang migrate sang Apache Iceberg. Chúng tôi dự định chỉ backfill khi cần, và sẽ rất tốt nếu có thể theo dõi quá trình đó bằng Git. Tôi muốn biết công cụ này có phù hợp với mục đích như vậy không. Một khả năng khác là theo dõi thay đổi schema theo cách tốt hơn hiện nay. Tôi đã ở trong lĩnh vực này hơn 20 năm và thấy anything-as-code rất hợp với dữ liệu
Rất vui khi thấy DVC được thảo luận ở đây
Với tư cách là công cụ, nó đã đơn giản hóa rất nhiều việc quản lý phiên bản dữ liệu và mô hình, và là một bước ngoặt lớn với nhiều người trong lĩnh vực MLOps. Đặc biệt, đây là một cách thông minh để liên kết trực tiếp các tệp lớn trong bất kỳ object storage nào với kho Git, mà không cần application server riêng như git-lfs hay viết lại Git. Tại DagsHub https://dagshub.com, chúng tôi đã tích hợp trực tiếp với DVC từ lâu, giúp các nhóm có thể trực quan hóa và gán nhãn dataset, quản lý mô hình, chạy thí nghiệm cộng tác, theo dõi code·dữ liệu·mô hình ở cùng một nơi. Nếu bạn đã dùng hoặc đang cân nhắc DVC, cũng có lựa chọn dùng nó như một thành phần trong toolchain gần với end-to-end hơn
Tôi tò mò nó so với Oxen thì thế nào
https://github.com/Oxen-AI/Oxen
Bên trong, chúng tôi tối ưu cấu trúc cây Merkle, thuật toán băm, giao thức mạng, v.v. để nó nhanh ngay cả với dataset lớn. https://oxen.ai cũng có một frontend khá ổn để xem và truy vấn dữ liệu
Ấn tượng ban đầu của tôi là DVC được tạo ra để dùng cùng Git, theo kiểu DVC quản lý một thư mục bất kỳ bên trong kho Git, còn Oxen có vẻ giống một giải pháp thay thế kho lưu trữ dữ liệu riêng hơn. Ngoài ra Oxen có nhiều tích hợp với dataframe, dữ liệu dạng bảng, dữ liệu huấn luyện/suy luận AI, dường như bổ sung những phần DVC không có. Ngược lại, DVC tích hợp DAG pipeline engine đầy đủ, import/export và các backend có thể thay thế
Tôi chưa hình dung rõ nó tương tác với dữ liệu như thế nào
Nếu đang lưu Delta table trên ADLS và không thể kéo dữ liệu production về local thì liệu vẫn dùng được không? Nếu chỉ cần xem Delta log để chuyển về phiên bản cũ thì tôi cũng tự hỏi có lý do gì để dùng DVC không
Bên cạnh đó có thêm các tính năng chuyên cho MLOps. Nó tiện khi quản lý phiên bản cho việc huấn luyện mô hình với dữ liệu thay đổi trên S3
Chúng tôi cũng đã xem xét DVC, nhưng với một số use case nhất định thì mô hình Git không hữu ích lắm
Đó là các tệp video khổng lồ gần như không thay đổi, và cần một bản sao dữ liệu ở phía nguồn, thêm một bản sao trên từng hệ thống chạy huấn luyện. Cuối cùng chúng tôi dùng tệp và thư mục trên NAS, và nó hoạt động đủ tốt. Có vẻ có thể dùng cách hybrid: chỉ quản lý metadata của dataset bằng DVC và versioning phần đó. Tuy nhiên chuyện này đã từ vài năm trước, và tôi tò mò hiện nay có thêm giải pháp quản lý phiên bản dữ liệu on-premise nào không. Lần cuối tôi tìm thì hầu hết có vẻ thiên về cloud
Tò mò DVC có ưu điểm gì so với Apache Iceberg
Nếu có ai đã dùng cả hai thì muốn nghe quan điểm
Nó tương tự Apache Iceberg nhưng là công cụ cho dữ liệu đa chiều như Zarr. https://earthmover.io/blog/icechunk và https://news.ycombinator.com/item?id=41850352
Iceberg có thể được thiết kế phù hợp hơn với các mô hình thay đổi chậm hơn so với cách này
Tóm lại, dữ liệu blob phi cấu trúc thì nên đưa vào DVC, còn dữ liệu có cấu trúc thì đưa vào Iceberg. Điểm DVC tốt hơn Iceberg là không cần phải cố nhét dữ liệu blob vào dạng bảng, và có thể tránh các bước xử lý phiền phức kéo theo quá trình đó. Thực tế cũng không cần chạy bước xử lý để lấy dữ liệu blob ra khỏi file Parquet; chỉ cần dùng lệnh như
dvc pullđể tải từng file về nguyên trạng. Sau khi sửa file cục bộ, có thể commit bằng khoảng ba lệnh, và cũng không cần pipeline ingest dữ liệu để cố nhét blob vào bảng. Vì hoàn toàn không có schema nên không phải lo về type, chỉ cần đưa vào repository rồi commit. Có thể rollback theo toàn bộ lịch sử commit, chứ không chỉ tới vacuum/checkpoint cuối cùng. Cố nhét dữ liệu blob vào định dạng dữ liệu dạng bảng gần như là công thức gây đau khổ; đưa blob vào một repository kiểu Git nhanh và dễ hơn nhiều. Điều này đặc biệt đúng nếu cần toàn bộ lịch sử phiên bản hoặc các branch cho các kết quả khác nhau; việc áp các bộ lọc ffmpeg khác nhau cho các file video 1080p dài theo từng branch rồi cho mọi người truy cập mọi kết quả và lịch sử sẽ là ác mộng trong Iceberg, nhưng lại dễ trong DVC. Rốt cuộc mọi thứ đều được quản lý phiên bản, nên có cảm giác như tạo ra một data lake không biến thành data swampKhi dùng với dataset gồm nhiều file jpg thì gặp rất nhiều vấn đề
Mỗi lần
dvc status, tác vụ lập chỉ mục kiểm tra tất cả file mất vài phút, và cache cũng không hoạt động. Tiếc là cuối cùng phải bỏĐặc biệt nếu dùng hệ thống file không hỗ trợ reflink. Với các dataset được shard lớn như WebDataset thì giải pháp khác sẽ tốt hơn, nhất là nếu pipeline machine learning có thể stream trực tiếp từ object storage
Cũng từng nghe về lakeFS như một công cụ quản lý phiên bản dữ liệu trên S3 object storage
Tò mò liệu DVC có thể là đối thủ cạnh tranh trong lĩnh vực này không