Hành trình đến 1 triệu người dùng Gradio!
Bài viết này kỷ niệm việc Gradio đạt 1 triệu người dùng.
- 9 min read
Hành trình đến 1 triệu người dùng Gradio!
5 năm trước, chúng tôi ra mắt Gradio như một thư viện Python đơn giản để các nhà nghiên cứu tại Stanford dễ dàng demo các mô hình thị giác máy tính với giao diện web.
Ngày nay, Gradio được hơn 1 triệu nhà phát triển sử dụng mỗi tháng để xây dựng và chia sẻ các ứng dụng web AI. Điều này bao gồm một số dự án mã nguồn mở phổ biến nhất mọi thời đại, như Automatic1111, Text Generation WebUI của Oobabooga, Dall-E Mini và LLaMA-Factory.
Chúng tôi đã đến được đây bằng cách nào? Gradio đã tiếp tục phát triển như thế nào trong lĩnh vực thư viện Python mã nguồn mở rất đông đúc này? Tôi nhận được câu hỏi này rất nhiều từ những người đang xây dựng thư viện mã nguồn mở của riêng họ. Bài đăng này chắt lọc một số bài học mà tôi đã học được trong vài năm qua:
- Đầu tư vào các nguyên thủy tốt, không phải các trừu tượng cấp cao
- Nhúng tính lan truyền trực tiếp vào thư viện của bạn
- Tập trung vào một thị trường ngách (đang phát triển)
- Lộ trình duy nhất của bạn nên là lặp lại nhanh chóng
- Tối đa hóa các cách người dùng có thể sử dụng đầu ra của thư viện của bạn
1. Đầu tư vào các nguyên thủy tốt, không phải các trừu tượng cấp cao
Khi chúng tôi lần đầu ra mắt Gradio, chúng tôi chỉ cung cấp một lớp cấp cao (gr.Interface), lớp này tạo ra một ứng dụng web hoàn chỉnh từ một hàm Python duy nhất. Chúng tôi nhanh chóng nhận ra rằng các nhà phát triển muốn tạo các loại ứng dụng khác (ví dụ: quy trình làm việc nhiều bước, chatbot, ứng dụng phát trực tuyến), nhưng khi chúng tôi bắt đầu liệt kê các ứng dụng mà người dùng muốn xây dựng, chúng tôi nhận ra những gì chúng tôi cần làm: đi xuống thấp hơn.
Thay vì xây dựng nhiều lớp cấp cao để hỗ trợ các trường hợp sử dụng khác nhau, chúng tôi đã xây dựng một API cấp thấp gọi là Gradio Blocks cho phép người dùng lắp ráp các ứng dụng từ các thành phần, sự kiện và bố cục mô-đun. Mặc dù thường tốn nhiều công sức hơn để sử dụng, gr.Blocks ngày nay chiếm 80% việc sử dụng Gradio - bao gồm cả các ứng dụng rất phổ biến được đề cập ở trên.
Với một nhóm nhỏ, việc tập trung vào các trừu tượng cấp thấp tất yếu có nghĩa là chúng tôi không thể theo đuổi nhiều trừu tượng cấp cao hấp dẫn. Nhưng sự tập trung này đã cứu chúng tôi khỏi hai cạm bẫy phổ biến:
- Bẫy tùy chỉnh-bảo trì: các trừu tượng cấp cao rất dễ sử dụng, nhưng người dùng yêu cầu thêm các tham số để tùy chỉnh chúng, do đó làm tăng gánh nặng bảo trì vì mọi trừu tượng và tham số cần được triển khai, duy trì và kiểm tra để tránh lỗi.
- Ảo ảnh năng suất: sử dụng các trừu tượng cấp cao có vẻ như ít công việc hơn, cho đến khi người dùng cần chức năng không được hỗ trợ (điều này có thể khó dự đoán khi bắt đầu dự án), buộc nhà phát triển phải thực hiện viết lại tốn kém.
Vấn đề đầu tiên lãng phí thời gian của chúng tôi với tư cách là người bảo trì Gradio, trong khi vấn đề thứ hai lãng phí thời gian của người dùng. Cho đến ngày nay, Gradio chỉ bao gồm hai trừu tượng cấp cao (gr.Interface và gr.ChatInterface) mà bản thân chúng được xây dựng bằng Blocks.
Ưu điểm của việc có các nguyên thủy tốt thậm chí còn ấn tượng hơn trong kỷ nguyên mã hóa được hỗ trợ bởi AI, nơi chúng tôi thấy rằng LLM thường giỏi trong việc xem xét tài liệu và xây dựng các ứng dụng phức tạp từ các nguyên thủy (ví dụ: xem tất cả các trò chơi đang được xây dựng với three.js). Không mất nhiều thời gian hơn để viết mã cấp thấp nếu AI đang viết mã cho bạn.
2. Tập trung vào một thị trường ngách (đang phát triển)
Đại sứ tốt nhất cho thư viện của bạn không phải là bạn mà là một người dùng nhiệt tình. Do đó, bạn nên tìm cách để người dùng chia sẻ thư viện hoặc sản phẩm của nó như một phần của quy trình làm việc của họ. Sự tăng trưởng ban đầu của Gradio được thúc đẩy bởi tính năng “liên kết chia sẻ” của chúng tôi (tạo một liên kết công khai tạm thời cho ứng dụng Gradio của bạn trong một dòng mã duy nhất). Thay vì phải lo lắng về việc đóng gói hoặc lưu trữ mã của họ trên một máy chủ web với loại tính toán phù hợp, người dùng Gradio có thể chia sẻ ứng dụng của họ với đồng nghiệp ngay lập tức.
Sau khi gia nhập Hugging Face, chúng tôi cũng được hưởng lợi từ việc trở thành giao diện người dùng tiêu chuẩn cho Hugging Face Spaces - được sử dụng rộng rãi bởi cộng đồng nghiên cứu máy học. Các Spaces lan truyền nhất đã thu hút hàng triệu khách truy cập, giới thiệu các nhà phát triển với Gradio, đến lượt họ chia sẻ và xây dựng các ứng dụng Gradio của riêng mình, sử dụng các Spaces đó (có mã có sẵn công khai) làm tài nguyên để tìm hiểu cách sử dụng Gradio.
3. Xây dựng cho một trường hợp sử dụng thích hợp (đang phát triển)
Ban đầu, chúng tôi phải đối mặt với một quyết định quan trọng: Gradio nên là một khung web Python đa năng hay chúng tôi nên tập trung cụ thể vào việc xây dựng các ứng dụng web máy học? Chúng tôi đã chọn phương án thứ hai và điều này đã tạo ra tất cả sự khác biệt.
Trong hệ sinh thái thư viện web Python đông đúc, chúng tôi thường được hỏi, “Gradio khác với X như thế nào?” Câu trả lời ngắn gọn của chúng tôi - rằng Gradio được tối ưu hóa cho các ứng dụng web máy học - rất dễ nhớ và về cơ bản là chính xác. Mỗi ứng dụng Gradio đi kèm với các tính năng đặc biệt phù hợp với quy trình làm việc ML, chẳng hạn như hàng đợi tích hợp có thể quản lý hiệu quả các tác vụ ML chạy dài, ngay cả với hàng nghìn người dùng đồng thời. Các thành phần mà chúng tôi đã thiết kế được điều chỉnh đặc biệt cho các trường hợp sử dụng ML. Mặt khác, trong một thời gian dài, Gradio thậm chí không bao gồm các tính năng như nút liên kết, đơn giản vì người dùng cốt lõi của chúng tôi không bao giờ cần đến nó. Bằng cách thu hẹp trọng tâm của mình, Gradio nhanh chóng trở thành lựa chọn hàng đầu trong số các nhà phát triển máy học - “UI mặc định cho AI”.
Tất nhiên, chúng tôi đã được hưởng lợi rất nhiều từ việc chọn một thị trường ngách đang phát triển. Những cơn gió ngược gần đây đã thúc đẩy tất cả những thứ liên quan đến AI đã mang lại lợi ích to lớn cho chúng tôi và có lẽ chúng tôi sẽ không trải qua loại tăng trưởng tương tự nếu chúng tôi tập trung vào khoa học dữ liệu hoặc bảng điều khiển chẳng hạn.
4. Lộ trình duy nhất của bạn nên là lặp lại nhanh chóng
Không giống như một số thư viện khác, Gradio không công bố lộ trình. Thay vào đó, chúng tôi theo dõi các xu hướng mới nổi trong máy học và vận chuyển cho phù hợp. Nói chung trong phần mềm mã nguồn mở và đặc biệt là AI, việc vận chuyển các tính năng dựa trên nhu cầu của cộng đồng (và ngừng sử dụng các tính năng không còn cần thiết) là chìa khóa để tăng trưởng liên tục. Một ví dụ cụ thể, trong các phiên bản đầu của Gradio, chúng tôi đã xây dựng chức năng cụ thể để cho phép các nhà phát triển hiển thị “diễn giải” các mô hình máy học của họ - vì đây là một trường hợp sử dụng rất phổ biến vào khoảng năm 2020-21. Khi sự quan tâm đến diễn giải giảm dần, chúng tôi đã ngừng sử dụng tính năng này và thay vào đó dồn nỗ lực vào phát trực tuyến âm thanh/video và các tính năng liên quan đến trò chuyện.
Quy trình nội bộ của chúng tôi cũng được phân cấp. Mỗi kỹ sư và người ủng hộ nhà phát triển trong nhóm Gradio gồm 11 người được khuyến khích xác định các ý tưởng có tác động, tạo mẫu nhanh chóng, tương tác trực tiếp với cộng đồng mã nguồn mở thông qua GitHub, Hugging Face và phương tiện truyền thông xã hội. Mỗi thành viên trong nhóm mang những ý tưởng này trở lại nhóm và chúng tôi liên tục xây dựng và xây dựng lại sự đồng thuận xung quanh những ý tưởng nào có khả năng có tác động khi chúng tôi tiếp tục phát triển theo các hướng có tác động lớn nhất.
5. Tối đa hóa các cách người dùng có thể sử dụng đầu ra của thư viện của bạn
Khi bạn tạo một ứng dụng Gradio và “launch()”, bạn sẽ có một ứng dụng web chạy trong trình duyệt của mình. Nhưng đó không phải là tất cả - bạn cũng nhận được một điểm cuối API cho mỗi hàm Python, cũng như tài liệu được tạo tự động cho mỗi điểm cuối. Các điểm cuối này có thể được sử dụng thông qua các ứng dụng khách Python hoặc JavaScript mà nhóm của chúng tôi đã xây dựng hoặc trực tiếp bằng cURL.
Lý do chúng tôi làm điều này là vì chúng tôi muốn mỗi phút mà nhà phát triển dành cho Gradio đều hữu ích tối đa. Một ứng dụng Gradio duy nhất sẽ chạy cục bộ hoặc được triển khai mà không cần bất kỳ thay đổi mã nào trên Hugging Face Spaces hoặc trên máy chủ của bạn, hoặc tích hợp vào các ứng dụng lớn hơn theo chương trình, hoặc thậm chí được các tác nhân AI khai thác thông qua MCP (sắp có thêm về điều đó!). Bằng cách tập trung vào khả năng sử dụng tối đa, chúng tôi hy vọng rằng các nhà phát triển có thể tiếp tục khai thác ngày càng nhiều hơn từ thư viện Gradio.
Hướng tới 10 triệu!
Link bài báo gốc
- Tags:
- Ai
- April 4, 2025
- Huggingface.co