Thư viện Transformers- chuẩn hóa các định nghĩa mô hình

Bài viết này thảo luận về việc chuẩn hóa các định nghĩa mô hình trong thư viện Transformers.

  • 6 min read
Thư viện Transformers- chuẩn hóa các định nghĩa mô hình
Bài viết này thảo luận về việc chuẩn hóa các định nghĩa mô hình trong thư viện Transformers.

Thư viện Transformers: Tiêu chuẩn hóa định nghĩa mô hình

TLDR: Trong tương lai, chúng tôi hướng tới Transformers là trục xoay giữa các framework: nếu một kiến trúc mô hình được hỗ trợ bởi transformers, bạn có thể mong đợi nó được hỗ trợ trong phần còn lại của hệ sinh thái.


Transformers được tạo ra vào năm 2019, ngay sau khi mô hình BERT Transformer được phát hành. Kể từ đó, chúng tôi liên tục hướng đến việc thêm các kiến trúc hiện đại nhất, ban đầu tập trung vào NLP, sau đó phát triển sang Âm thanh và thị giác máy tính. Ngày nay, transformers là thư viện mặc định cho LLM và VLM trong hệ sinh thái Python.

Transformers hiện hỗ trợ hơn 300 kiến trúc mô hình, với trung bình ~3 kiến trúc mới được thêm vào mỗi tuần. Chúng tôi hướng đến việc phát hành các kiến trúc này một cách kịp thời; có hỗ trợ ngày 0 cho các kiến trúc được tìm kiếm nhiều nhất (Llamas, Qwens, GLMs, v.v.).

Thư viện định nghĩa mô hình

Transformers chuẩn hóa định nghĩa mô hình

Theo thời gian, Transformers đã trở thành một thành phần trung tâm trong hệ sinh thái ML, trở thành một trong những bộ công cụ hoàn chỉnh nhất về sự đa dạng của mô hình; nó được tích hợp trong tất cả các framework huấn luyện phổ biến như Axolotl, Unsloth, DeepSpeed, FSDP, PyTorch-Lightning, TRL, Nanotron, v.v.

Gần đây, chúng tôi đã làm việc song song với các công cụ suy luận phổ biến nhất (vLLM, SGLang, TGI, …) để chúng sử dụng transformers làm backend. Giá trị gia tăng là rất lớn: ngay sau khi một mô hình được thêm vào transformers, nó sẽ có sẵn trong các công cụ suy luận này, đồng thời tận dụng các điểm mạnh mà mỗi công cụ cung cấp: tối ưu hóa suy luận, kernel chuyên dụng, phân lô động, v.v.

Ví dụ: đây là cách bạn sẽ làm việc với backend transformers trong vLLM:

from vllm import LLM

llm = LLM(model="new-transformers-model", model_impl="transformers")

Đó là tất cả những gì cần thiết để một mô hình mới có thể tận hưởng khả năng phục vụ siêu nhanh và cấp độ sản xuất với vLLM!

Đọc thêm về nó trong tài liệu vLLM.


Chúng tôi cũng đã làm việc rất chặt chẽ với llama.cppMLX để các triển khai giữa transformers và các thư viện mô hình hóa này có khả năng tương tác tuyệt vời. Ví dụ: nhờ nỗ lực đáng kể của cộng đồng, giờ đây rất dễ dàng tải các tệp GGUF trong transformers để tinh chỉnh thêm. Ngược lại, các mô hình transformers có thể dễ dàng chuyển đổi thành các tệp GGUF để sử dụng với llama.cpp.

Điều tương tự cũng đúng với MLX, nơi các tệp safetensors của transformers hoàn toàn tương thích với các mô hình của MLX.

Chúng tôi vô cùng tự hào rằng định dạng transformers đang được cộng đồng chấp nhận, mang lại rất nhiều khả năng tương tác mà tất cả chúng ta đều được hưởng lợi. Huấn luyện một mô hình với Unsloth, triển khai nó với SGLang và xuất nó sang llama.cpp để chạy cục bộ! Chúng tôi mong muốn tiếp tục hỗ trợ cộng đồng trong tương lai.

Phấn đấu để đóng góp mô hình thậm chí đơn giản hơn

Để giúp cộng đồng dễ dàng sử dụng transformers làm tài liệu tham khảo cho định nghĩa mô hình, chúng tôi cố gắng giảm đáng kể rào cản đối với việc đóng góp mô hình. Chúng tôi đã thực hiện nỗ lực này trong một vài năm, nhưng chúng tôi sẽ tăng tốc đáng kể trong vài tuần tới:

  • Mã mô hình hóa của mỗi mô hình sẽ được đơn giản hóa hơn nữa; với các API rõ ràng, ngắn gọn cho các thành phần quan trọng nhất (bộ nhớ cache KV, các hàm Attention khác nhau, tối ưu hóa kernel)
  • Chúng tôi sẽ ngừng sử dụng các thành phần dư thừa để ủng hộ việc có một cách đơn giản, duy nhất để sử dụng API của chúng tôi: khuyến khích mã hóa token hiệu quả bằng cách ngừng sử dụng các bộ mã hóa token chậm và tương tự như vậy, sử dụng các bộ xử lý hình ảnh vector hóa nhanh.
  • Chúng tôi sẽ tiếp tục củng cố công việc xung quanh các định nghĩa mô hình mô-đun, với mục tiêu là các mô hình mới yêu cầu các thay đổi mã tối thiểu tuyệt đối. Đóng góp 6000 dòng, thay đổi 20 tệp cho các mô hình mới là điều của quá khứ.

Điều này ảnh hưởng đến bạn như thế nào?

Điều này có nghĩa là gì đối với bạn, với tư cách là người dùng mô hình

Với tư cách là người dùng mô hình, trong tương lai, bạn sẽ thấy khả năng tương tác thậm chí còn lớn hơn trong các công cụ mà bạn sử dụng.

Điều này không có nghĩa là chúng tôi có ý định khóa bạn sử dụng transformers trong các thử nghiệm của bạn; thay vào đó, nó có nghĩa là nhờ tiêu chuẩn hóa mô hình này, bạn có thể mong đợi các công cụ bạn sử dụng để huấn luyện, suy luận và sản xuất, hoạt động hiệu quả cùng nhau.

Điều này có nghĩa là gì đối với bạn, với tư cách là người tạo mô hình

Với tư cách là người tạo mô hình, điều này có nghĩa là một đóng góp duy nhất sẽ giúp mô hình của bạn có sẵn trong tất cả các thư viện hạ nguồn đã tích hợp triển khai mô hình đó. Chúng tôi đã thấy điều này nhiều lần trong những năm qua: phát hành một mô hình là căng thẳng và tích hợp trong tất cả các thư viện quan trọng thường là một sự hao tốn thời gian đáng kể.

Bằng cách tiêu chuẩn hóa việc triển khai mô hình theo cách hướng đến cộng đồng, chúng tôi hy vọng sẽ giảm bớt rào cản đóng góp cho lĩnh vực trên các thư viện.


Chúng tôi tin chắc rằng hướng đi mới này sẽ giúp tiêu chuẩn hóa một hệ sinh thái thường có nguy cơ bị phân mảnh. Chúng tôi rất muốn nghe phản hồi của bạn về hướng mà nhóm đã quyết định đi theo; và những thay đổi mà chúng tôi có thể thực hiện để đạt được điều đó. Vui lòng đến và gặp chúng tôi tại tab hỗ trợ cộng đồng transformers trên Hub!

Recommended for You

Chuyển ngữ whisper cực nhanh với Inference Endpoints

Chuyển ngữ whisper cực nhanh với Inference Endpoints

Bài viết này thảo luận về cách sử dụng Inference Endpoints để có được bản ghi whisper cực nhanh.

Cách xây dựng máy chủ MCP bằng Gradio

Cách xây dựng máy chủ MCP bằng Gradio

Bài viết này thảo luận về cách xây dựng máy chủ MCP bằng Gradio.