1 điểm bởi GN⁺ 2024-08-21 | 1 bình luận | Chia sẻ qua WhatsApp
  • Transformers.rb là thư viện cho phép sử dụng Transformers của Hugging Face trong Ruby, tập trung vào việc chạy các mô hình transformer hiện đại bằng mã Ruby
  • Cách cài đặt là trước tiên cài Torch.rb, sau đó thêm gem "transformers-rb" vào Gemfile
  • Ví dụ được hỗ trợ bao gồm embedding, sparse embedding, và mô hình reranking, đồng thời cho thấy cách dùng các dòng mô hình sentence-transformers, mixedbread-ai, BAAI, Snowflake, OpenSearch
  • Pipeline được chia thành văn bản và thị giác, gọi các tác vụ như NER, phân tích cảm xúc, hỏi đáp, phân loại ảnh, trích xuất đặc trưng ảnh dưới dạng Transformers.pipeline
  • API tuân theo Transformers Python API và hiện hỗ trợ các kiến trúc BERT, DeBERTa-v2, DistilBERT, MPNet, ViT, XLM-RoBERTa

Sử dụng Transformers trong Ruby

  • Transformers.rb là thư viện transformers hiện đại dành cho Ruby
  • Nếu cần suy luận nhanh, tài liệu gợi ý xem Informers

Cách cài đặt

  • Trước tiên cần cài Torch.rb
  • Sau đó thêm dòng sau vào Gemfile của ứng dụng
gem "transformers-rb"

Ví dụ về các mô hình được hỗ trợ

Pipeline

  • Pipeline Text hỗ trợ các tác vụ sau
    • embedding: tạo embedding văn bản
    • reranking: sắp xếp lại thứ hạng của truy vấn và mảng tài liệu
    • ner: nhận diện thực thể có tên
    • sentiment-analysis: phân tích cảm xúc
    • question-answering: tạo câu trả lời từ đầu vào là câu hỏi và ngữ cảnh
    • feature-extraction: trích xuất đặc trưng văn bản
  • Pipeline Vision hỗ trợ các tác vụ sau
    • image-classification: phân loại ảnh
    • image-feature-extraction: trích xuất đặc trưng ảnh

API và các kiến trúc được hỗ trợ

  • Thư viện này tuân theo Transformers Python API
  • Kiến trúc mô hình hiện được hỗ trợ gồm
    • BERT
    • DeBERTa-v2
    • DistilBERT
    • MPNet
    • ViT
    • XLM-RoBERTa

Phát triển và đóng góp

  • Có thể xem lịch sử thay đổi trong changelog
  • Cách đóng góp bao gồm báo cáo lỗi, sửa lỗi và gửi pull request, viết/làm rõ/chỉnh sửa tài liệu, đề xuất hoặc bổ sung tính năng mới
  • Hướng dẫn bắt đầu phát triển theo thứ tự: clone kho mã, bundle install, bundle exec rake download:files, bundle exec rake test

1 bình luận

 
GN⁺ 2024-08-21
Ý kiến trên Hacker News
  • ONNX Runtime cho Ruby của Ankane dễ dùng đến mức khiến người ta tự hỏi vì sao kho chính thức cho JavaScript lại khó hiểu như vậy
    Dù mới chỉ nhìn lướt qua những gì người này làm được, tôi đã thấy anh ấy như một người hùng

  • Nói thật, người này có thật là con người không vậy? Nếu là một cá nhân tài năng đến mức này, tôi muốn đầu tư 1 tỷ USD cũng được

    • Tôi tài năng cỡ một phần trăm của anh ấy thôi, nhưng nếu là khoản đầu tư 10 triệu USD thì tôi sẵn sàng nhận
  • Có lẽ anh ấy không làm việc này vì điều đó, nhưng nếu ai muốn bày tỏ sự cảm ơn, tôi đã đề cử Ankane cho Rails 2024 Luminary award
    https://rubyonrails.org/2024/8/2/nominations-open-for-2024-l...

    • Đồng ý. Khối lượng công việc hữu ích mà Ankane đóng góp cho cộng đồng thật sự phi thực tế
  • Những đóng góp như thế này là điều cộng đồng Ruby rất cần, và dự án này trông cũng thú vị

    • Đúng vậy. Nhìn chung, chính việc thiếu hoặc tốc độ xuất hiện chậm của các đóng góp kiểu này khiến tôi thấy cộng đồng Ruby đang chững lại
      Trong trường hợp này, Ruby bỗng có một thư viện tuyệt vời, và bản thân điều đó là một thành quả rất đáng biết ơn. Nhưng có thể nói “cộng đồng” chỉ “tạo ra” thứ như vậy sau vài tháng hoặc vài năm kể từ khi cùng thư viện đã xuất hiện cho Python, JavaScript, TypeScript, Rust, Go, v.v.
      Không chỉ trong machine learning/trí tuệ nhân tạo, điều tương tự cũng xảy ra với các thư viện Ruby, tức gem, dành cho công nghệ mới. Trước đây, SaaS hay startup thường cung cấp Rubygem chính thức ngay từ đầu, đôi khi còn trước cả các nền tảng hoặc ngôn ngữ khác. Ngày nay, nếu muốn tích hợp với những thứ như Notion, Slack, Cloudflare, nhiều khi không có lựa chọn Ruby, hoặc ít nhất là không có lựa chọn chính thức
      Điều này thật buồn. Ruby là một ngôn ngữ rộng hơn Rails rất nhiều, và tôi có thể hiểu sự e dè hay ác cảm với Rails. Dù vậy, Ruby là ngôn ngữ làm việc thú vị hơn Python, và chắc chắn thú vị hơn JavaScript rất nhiều. Ruby hoàn toàn đã có thể chiếm vị trí của Python ngày nay, và tôi tin chắc nếu vậy thì hàng chục nghìn lập trình viên đã hạnh phúc hơn hiện tại một chút
  • Một mình Ankane đang đóng góp to lớn trở lại cho ngành theo rất nhiều cách. Thật đáng nể

  • Tôi tò mò làm sao một người có thể năng suất đến vậy. Hẳn cuộc sống cũng khá bận rộn với công việc, gia đình, v.v.

  • Khó mà diễn tả tôi biết ơn các gem của Ankane đến mức nào. Những thứ anh ấy tạo ra từng là thành phần thiết yếu trong vài ứng dụng của tôi, và tôi thấy chúng lấp đầy các khoảng trống của hệ sinh thái

  • Các công cụ người này tạo ra thật sự đáng kinh ngạc. Càng có thêm nhiều càng tốt

  • Theo tôi biết, Andrew Kane cũng là tác giả của pgvector, pgvector-ruby, neighbor, và tất cả đều khá tuyệt
    Ngoài ra anh ấy còn tạo ra rất nhiều thứ khác
    Có lẽ từ lâu anh ấy đã một mình giải quyết xong trí tuệ nhân tạo/machine learning, rồi dùng nó để đạt năng suất như thế này cũng nên
    [0] https://github.com/pgvector/pgvector
    [1] https://github.com/pgvector/pgvector-ruby
    [2] https://github.com/ankane/neighbor
    [3] https://github.com/ankane/

    • Anh ấy cũng làm rất nhiều thứ ngoài mảng trí tuệ nhân tạo
      https://github.com/ankane/pretender giúp việc giả lập thành người dùng khác trong ứng dụng Rails trở nên rất dễ dàng
      https://github.com/ankane/ahoy là công cụ phân tích tự quản cho Rails
      https://github.com/ankane/blazer là công cụ business intelligence chạy bên trong Rails
      https://github.com/ankane/field_test dùng cho A/B testing
      Những thứ này giúp tăng năng suất Rails trong các ứng dụng web thông thường. Với từng thứ có thể có sản phẩm vendor tốt hơn hoặc giải pháp chuyên biệt hơn, nhưng nếu chỉ cần thêm gem và cấu hình một chút là có được giải pháp 80%, bạn có thể ra mắt cực nhanh
    • Còn có Chartkick, Ahoy, Searchkick nữa
      Chartkick là thư viện biểu đồ cho Ruby, Ahoy là thư viện phân tích cho Rails, Searchkick là thư viện tìm kiếm cho Rails
      Hồ sơ GitHub của anh ấy có hơn 370 repository
    • Trong kho production của chúng tôi cũng dùng rất nhiều công cụ của Andrew Kane. Nhờ các package của anh ấy mà có thể xây dựng ứng dụng trí tuệ nhân tạo bằng Rails
    • Nếu bạn dùng Ruby mà vẫn chưa biết ankane, GitHub của anh ấy có rất nhiều công cụ cực kỳ hữu ích
      Ví dụ /disco là một triển khai collaborative filtering rất đơn giản, dùng khi muốn nhanh chóng thêm tính năng gợi ý vào bất cứ đâu
      Nếu đang tìm thứ gì đó liên quan đến machine learning bằng Ruby, thường thì ankane đã xem qua rồi
    • Anh ấy là một trong những người sáng tác/đóng góp nhiều nhất mà tôi biết
  • Trong cộng đồng Ruby, cá nhân tôi xem Andrew Kane và Chris Oliver là những người xuất sắc nhất trong số xuất sắc nhất. Dù không dùng hết mọi đóng góp của họ, những đóng góp như vậy luôn đáng hoan nghênh