2 điểm bởi GN⁺ 2023-09-18 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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á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

 
GN⁺ 2023-09-18
Ý 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ộ”

    • Có thể bớt tự quảng bá một chút được không. Tôi thường thấy các bình luận về ollama trong hầu như mọi bài liên quan đến LLM
      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

    • Điều đó đúng với tinh chỉnh truyền thống, nhưng tôi không rõ có đúng với tinh chỉnh hiệu quả tham số hay qLORA không
      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?
    • Tôi nghĩ H100 không đến mức giá một căn nhà, mà gần giá một chiếc ô tô hơn
    • Tinh chỉnh theo kiểu phân tán trên một mạng không đáng tin cậy có thể kém hiệu quả năng lượng và chi phí hơn rất nhiều so với một nút đơn lẻ hoặc một cụm kết nối tốt
      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
    • Điều gì ngăn việc song song hóa huấn luyện LLM? Dù đọc sách 1 trước rồi sách 2, hay ngược lại, kết quả cập nhật kiến thức cũng sẽ giống nhau
      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
    • Dùng công nghệ tối ưu hóa trình biên dịch của CentML thì có thể tinh chỉnh 40B Falcon trên 4×A10 mà không cần thay đổi mô hình
  • 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

  • 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ụ

    • Tôi là nhà phát triển Petals. Chúng tôi đang phát triển một trình xác minh định kỳ quét tất cả máy chủ và chặn những máy chủ trả về kết quả sai
      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...

    • AI Horde kudos được nói đến ở đây thật sự rất hay, và cá nhân tôi nghĩ nó đang bị dùng ít hơn rất nhiều so với tiềm năng:
      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
    • Trong lĩnh vực thiết kế đồ họa, render farm phân tán đã có từ lâu. Ngoài việc điểm cao thì công việc được ưu tiên cao hơn, không có khuyến khích riêng nào khác.
      https://www.sheepit-renderfarm.com/home
    • Với câu trả lời cho câu hỏi “động lực để host các layer của model trong swarm công khai là gì?”, những người tự chạy suy luận và fine-tune có thể đạt được một mức tăng tốc nhất định nếu host một phần model cục bộ. Ngoài ra, giống như người dùng BitTorrent chia sẻ dữ liệu đã tải xuống để giúp người khác, họ cũng có thể có động lực đóng góp lại cho cộng đồng đã giúp họ chạy model.
      Đ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 đó.
    • Thật tiếc là giờ mọi dự án phi tập trung đều phải bị đem ra so với tiền mã hóa.
    • Kết luận hợp lý cuối cùng là các model rồi sẽ được gắn với thanh toán bằng tiền mã hóa. Ở đây Lightning trở nên quan trọng.
      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...

    • Nếu chạy cụm trong một môi trường đáng tin cậy, tôi nghĩ dùng Ray hoặc thứ tương tự sẽ hiệu quả hơn.
  • 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.