Petals - chạy LLM tại nhà theo kiểu BitTorrent
(petals.dev)- Petals cho phép tạo văn bản và fine-tuning mà không cần đưa toàn bộ mô hình ngôn ngữ lớn lên một thiết bị, chỉ chạy một phần bằng GPU gia đình hoặc Google Colab
- Hỗ trợ Llama 3.1 tới 405B, Mixtral 8x22B, Falcon 40B+, và BLOOM 176B, giúp xử lý các mô hình lớn ngay cả với thiết bị cá nhân
- Người dùng nạp mảnh mô hình mà mình đảm nhận, rồi kết nối vào mạng lưới người tham gia cung cấp các mảnh còn lại theo cấu trúc kiểu BitTorrent
- Suy luận một batch đạt tối đa 6 tokens/sec trên Llama 2 70B và tối đa 4 tokens/sec trên Falcon 180B, đủ dùng cho chatbot và ứng dụng tương tác
- Có thể chọn cách fine-tuning và lấy mẫu linh hoạt hơn API LLM thông thường, đồng thời can thiệp tới đường đi bên trong mô hình và cả hidden states
Chạy mô hình lớn theo cách phân tán
- Petals hướng tới việc chạy mô hình ngôn ngữ lớn tại nhà, hoạt động giống BitTorrent khi nhiều người dùng cùng cung cấp các phần khác nhau của mô hình
- Người dùng không cần nạp toàn bộ mô hình mà chỉ đưa lên một phần mô hình, sau đó tham gia vào mạng lưới cung cấp các phần còn lại
- Mô hình được hỗ trợ:
- Llama 3.1: tới 405B
- Mixtral: 8x22B
- Falcon: 40B+
- BLOOM: 176B
- Có thể thực hiện tạo văn bản và fine-tuning theo tác vụ bằng GPU gia đình hoặc Google Colab
- Hiệu năng suy luận một batch:
- Llama 2 70B: tối đa 6 tokens/sec
- Falcon 180B: tối đa 4 tokens/sec
- Tốc độ này đủ cho chatbot và các ứng dụng tương tác
Phạm vi kiểm soát rộng hơn API
- Petals vượt ra ngoài API LLM truyền thống khi cho phép tự chọn phương pháp fine-tuning và lấy mẫu
- Có thể chạy đường đi tùy chỉnh xuyên qua mô hình hoặc kiểm tra hidden states
- Cung cấp одновременно sự tiện lợi của API và tính linh hoạt của PyTorch, 🤗 Transformers
- Có sẵn notebook Colab để chạy thử ngay và tài liệu GitHub
- Có cách tham gia bằng cách cung cấp GPU để mở rộng năng lực của Petals, và có thể theo dõi tin tức phát triển trên Discord
- Dự án này là một phần của workshop nghiên cứu BigScience
1 bình luận
Ý kiến trên Hacker News
Thú vị. Có vẻ cấu trúc là chia trọng số mô hình theo từng lớp rồi phân tán lên nhiều máy; mỗi máy, khi sẵn sàng, sẽ đăng ký mình vào một bảng băm lớn, sau đó thực hiện suy luận hoặc tinh chỉnh “theo nhóm” cho lớp mà nó phụ trách
Vẫn còn ở giai đoạn đầu, nhưng tôi đã làm việc với việc lưu trữ trọng số mô hình cho https://github.com/jmorganca/ollama trên Docker registry. Lý do chính là khả năng định địa chỉ theo nội dung: Ollama có thể xác minh mỗi lần rằng đúng trọng số đã được tải xuống, và cuối cùng có thể lấy trọng số dựa trên chính nội dung thay vì tên hoặc URL có thể thay đổi
Bước tiếp theo có lẽ là chia mô hình theo lớp và lưu trữ từng lớp độc lập để dùng cho mục đích như thế này, hoặc tận dụng để tải xuống và chạy các mô hình lớn hơn trên nhiều máy “cục bộ”
Hướng dẫn của HN cũng nói rằng “đừng dùng HN chủ yếu để quảng bá; thỉnh thoảng đăng về công việc của mình thì được, nhưng mục đích chính khi dùng trang nên là sự tò mò”
Trong trường hợp này, nói về công việc của OP là đủ rồi, không cần kèm backlink miễn phí tới dự án
Tôi đã nhướng mày ở đoạn “có thể tinh chỉnh cho phù hợp với tác vụ”
Tinh chỉnh 70B không chỉ là khó; dù bạn có thể chờ lâu đến đâu, nó gần như là bất khả thi nếu không thuê các instance đám mây cực đắt hoặc mua một chiếc PC giá ngang căn nhà
Nếu có “horde huấn luyện llama” thì tôi sẵn lòng tham gia
Theo tôi hiểu, một mô hình N chục tỷ tham số có thể được tinh chỉnh bằng GPU có VRAM tính bằng GB nhỏ hơn N một chút
Với mô hình 70B tham số thì cỡ A100 chăng?
Ngoài ra, trên Lambda Cloud có thể tinh chỉnh mô hình 70B với giá 2 đô la cho mỗi triệu token, còn trên Replicate thì dưới 10 đô la
Nếu coi LLM học từng cuốn sách một cách độc lập, có vẻ chỉ cần cộng hai delta của trọng số LLM lại là được
LLM đã được huấn luyện có thể hợp thành theo cách nào đó không? Ví dụ nếu cả hai đều tin cậy 99% cùng một dữ liệu nhưng chỉ khác nhau ở 1%, liệu có cần hai mô hình hoàn toàn riêng biệt không, hay có thể chia sẻ tính toán với những người khác có cùng quan điểm về 99% đó và tạo một mô hình phái sinh để hiệu chỉnh khác biệt trong mô hình tin cậy của từng người?
Hiểu biết của tôi về mạng nơ-ron chỉ ở mức cơ bản, nhưng việc thao tác trọng số theo cách đó trong khi vẫn giữ được tính hữu dụng của mô hình dường như không phải điều vô lý
Tôi hỏi vì có vẻ sẽ hữu ích nếu biết hai LLM có cùng hiệu năng đồng ý với câu nào và có disagreement ở câu nào. Khi đó có thể ánh xạ ngược khác biệt đó về khác biệt trong dữ liệu huấn luyện. Có lẽ chỉ khả thi khi khác biệt nhỏ
Ngược lại, nếu hai LLM cùng hiệu năng gần như là đã bỏ lỡ cơ hội tạo ra một mô hình mạnh hơn, và phân tích disagreement cũng quá đắt đỏ, thì đó sẽ là một thế giới khá khác
Điều này không có nghĩa là có thể lấy các lớp thích nghi như vậy rồi tùy ý kết hợp chúng, nhưng việc huấn luyện các mô hình khác nhau trong khi chia sẻ cùng một nền trọng số chung đã là vấn đề được giải quyết
Làm sao ngăn người tham gia độc hại thay đổi phần đầu ra của họ trong một phép tính lớn hơn? Ngay cả khi không có cách nào tạo ra đầu ra mạng do kẻ tấn công lựa chọn, nếu nhiều nút tham gia rồi chỉ trả về kết quả rác thì có vẻ hệ thống thực tế có thể bị tấn công từ chối dịch vụ
Ngoài ra, client có thể cho dữ liệu chảy qua nhiều tuyến không trùng nhau trong mạng và kiểm tra xem kết quả có khớp nhau không
Cách này sẽ phát hiện những kẻ tấn công thường xuyên, nhưng không bảo vệ 100%, nên nếu cần bảo đảm độ chính xác tuyệt đối, tôi nghĩ mọi người sẽ lập swarm riêng tư. Ví dụ, nếu bạn không có đủ GPU để tự chạy LLM nhưng có những chủ sở hữu phần cứng đáng tin cậy, bạn có thể lập một Petals swarm riêng tư để cùng chạy LLM và xử lý dữ liệu trên phần cứng phân tán về mặt địa lý
Câu hỏi đầu tiên nảy ra là “tính kinh tế thì thế nào?”. Theo FAQ:
Cơ chế khuyến khích của Petals có dựa trên tiền mã hóa, blockchain, v.v. không? Không. Petals là một hệ thống hoàn toàn phi tập trung ở mọi khía cạnh khác, nhưng phần khuyến khích đang được xây dựng như một hệ thống tập trung, tương tự kudos của AI Horde. Họ không có kế hoạch cung cấp dịch vụ đổi các điểm này thành tiền, nên có thể xem đó là điểm “trò chơi” dùng trong hệ thống.
Petals là một dự án tập trung vào machine learning dành cho các nhà nghiên cứu và kỹ sư machine learning, không liên quan đến tài chính. Lý do họ chọn tập trung hóa hệ thống khuyến khích là vì việc phát triển và bảo trì dễ hơn nhiều, nhờ đó có thể tập trung vào phát triển các tính năng hữu ích cho nhà nghiên cứu machine learning.
https://github.com/bigscience-workshop/petals/wiki/FAQ:-Freq...
https://lite.koboldai.net/
https://tinybots.net/artbot
https://aihorde.net/
Thực ra nếu có ai trên HN muốn thử một model fine-tune 13B~70B cụ thể nào đó, tôi có thể host vào buổi chiều:
https://huggingface.co/models?sort=modified&search=70B+gguf
https://www.sheepit-renderfarm.com/home
Điều đó có thể chưa đủ cho tất cả mọi người, nên họ cũng đang đưa vào “bloom points”, một khuyến khích rõ ràng dành cho những người đóng góp thời gian GPU cho swarm công khai. Khi hệ thống sẵn sàng, website sẽ hiển thị những người đóng góp hàng đầu, và những người kiếm được điểm có thể dùng chúng cho suy luận/fine-tune với mức ưu tiên cao hơn hoặc bảo đảm an toàn được tăng cường, hoặc có thể đổi lấy các phần thưởng khác.
Dù vậy, có vẻ họ vẫn muốn một dạng token tập trung nào đó.
Nói thêm, ý tôi không phải là kết nối “token” của Petals với hệ thống thanh toán. Ý là nhìn chung, bất kể có phi tập trung hay không, các lệnh gọi tới cụm model machine learning nhiều khả năng sẽ dùng thanh toán bằng tiền mã hóa, vì nó đồng thời cung cấp xác thực và phương tiện thanh toán.
Petals là một triển khai tốt của điện toán phi tập trung để sử dụng model, và có vẻ sẽ có giá trị về dài hạn.
Tôi đã muốn chia sẻ chiếc 3080 Ti của mình, nhưng khi chạy lệnh trong hướng dẫn bắt đầu thì có vẻ gặp vấn đề về phiên bản dependency: https://github.com/bigscience-workshop/petals/wiki/Run-Petal...
ImportError: cannot import name 'get_full_repo_name' from 'huggingface_hub' (~/.local/lib/python3.8/site-packages/huggingface_hub/__init__.py)Có vẻ có thể host swarm máy chủ riêng [0]
Tôi tò mò hiệu năng fine-tune của một cụm Petals “riêng tư” đại khái sẽ như thế nào.
[0] https://github.com/bigscience-workshop/petals/wiki/Launch-yo...
Thật sự rất tuyệt. Mong là nó giúp thêm hàng nghìn, hàng triệu lập trình viên có thể tiếp cận lĩnh vực này.
Tôi luôn nghĩ crowdsourcing là tương lai. Dù là thông tin hay tính toán cũng vậy.
Thật ra “tài nguyên” đã có sẵn rồi, chỉ là vấn đề bố trí mà thôi.
Tôi từng dùng Petals trong một dự án trước đây. Tôi cũng chia sẻ GPU và viết code cho dự án đó.
Phần Petals được trừu tượng hóa đối với tôi, và trải nghiệm viết code thì bình thường.
Tôi không đăng dự án đó ở đâu cả và cũng không rõ sau đó nó ra sao. Nhìn chung đó là việc do khoảng năm người dẫn dắt.