Transformers documentation

Triết lý

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Triết lý

Transformers là thư viện ưu tiên PyTorch. Nó cung cấp các mô hình trung thành với bài báo gốc, dễ sử dụng và dễ tùy chỉnh.

Một bài viết dài hơn, đi sâu vào chi tiết với các ví dụ, hình ảnh trực quan và dòng thời gian có sẵn tại đây như tài liệu tham khảo chính thức của chúng tôi.

Triết lý của chúng tôi phát triển thông qua thực hành. Những gì được trình bày dưới đây là các nguyên tắc ổn định hiện tại của chúng tôi.

Thư viện này dành cho ai

  • Nhà nghiên cứu và nhà giáo dục đang khám phá hoặc mở rộng các kiến trúc mô hình.
  • Người thực hành tinh chỉnh, đánh giá hoặc triển khai các mô hình.
  • Kỹ sư muốn có một mô hình được huấn luyện trước “hoạt động ngay lập tức” với một API có thể dự đoán được.

Những gì bạn có thể mong đợi

  • Mỗi model yêu cầu ba lớp cốt lõi: configuration, models và một lớp tiền xử lý. Tokenizers xử lý NLP, image processors xử lý ảnh, video processors xử lý video, feature extractors xử lý âm thanh và processors xử lý đầu vào đa phương thức.

  • Tất cả các lớp này đều có thể được khởi tạo một cách đơn giản và thống nhất từ các phiên bản được huấn luyện trước bằng cách sử dụng phương thức from_pretrained() chung, phương thức này sẽ tải xuống (nếu cần), lưu vào bộ nhớ đệm và nạp phiên bản của lớp liên quan cùng dữ liệu liên quan (các siêu tham số cấu hình, từ vựng của bộ phân tách token, các tham số của bộ xử lý và trọng số của mô hình) từ một checkpoint được huấn luyện trước có sẵn trên Hugging Face Hub hoặc từ checkpoint do chính bạn lưu lại.

  • Trên nền ba lớp cơ sở đó, thư viện cung cấp hai API: pipeline() để nhanh chóng sử dụng một mô hình cho suy luận trên một tác vụ cụ thể và Trainer để nhanh chóng huấn luyện hoặc tinh chỉnh một mô hình PyTorch.

Các nguyên tắc cốt lõi

Các nguyên tắc sau đây đã được củng cố theo thời gian và được trình bày chi tiết trong bài đăng blog về triết lý mới của chúng tôi. Chúng định hướng các quyết định của người duy trì khi xem xét các PR và đóng góp.

  • Nguồn sự thật. Các bản triển khai phải trung thành với kết quả chính thức và hành vi dự kiến.
  • Một mô hình, một tệp. Logic suy luận/đào tạo cốt lõi hiển thị rõ ràng từ trên xuống dưới trong tệp mô hình mà người dùng đọc.
  • Code là Sản phẩm. Tối ưu hóa cho việc đọc và so sánh diff. Ưu tiên đặt tên rõ ràng hơn là các cách tham chiếu vòng vo.
  • Chuẩn hóa, đừng trừu tượng hóa. Giữ hành vi cụ thể của mô hình trong mô hình. Chỉ sử dụng các giao diện chung cho hạ tầng chung.
  • DRY* (Lặp lại khi điều đó hỗ trợ người dùng). Các tệp mô hình dành cho người dùng cuối vẫn tự chứa. Hạ tầng được tách riêng.
  • API người dùng tối giản. Ít đường dẫn mã, các tham số kwargs có thể dự đoán, các phương thức ổn định.
  • Tương thích ngược. Các bề mặt công khai không được phép bị hỏng. Các sản phẩm Hub cũ vẫn phải tiếp tục hoạt động.
  • Bề mặt công khai nhất quán. Việc đặt tên, đầu ra và chẩn đoán tùy chọn được đồng bộ hóa và kiểm thử.

Các lớp chính

  • Các lớp cấu hình lưu trữ các siêu tham số cần thiết để xây dựng một mô hình. Chúng bao gồm số lượng lớp và kích thước ẩn. Bạn không phải lúc nào cũng cần tự khởi tạo chúng. Khi sử dụng một mô hình được huấn luyện trước mà không có sự thay đổi, việc tạo mô hình sẽ tự động khởi tạo cấu hình.

  • Các lớp mô hình là các mô hình PyTorch (torch.nn.Module), được bọc bởi ít nhất một PreTrainedModel.

  • Transformers dạng module. Người đóng góp viết một shard modular_*.py nhỏ, khai báo việc tái sử dụng từ các thành phần có sẵn. Thư viện tự động mở rộng shard này thành tệp modeling_*.py hiển thị để người dùng đọc/gỡ lỗi. Người duy trì xem xét shard; người dùng chỉnh sửa tệp đã được mở rộng. Cách này giữ nguyên nguyên tắc “Một mô hình, một tệp” mà không gây lệch boilerplate. Xem tài liệu đóng góp để biết thêm thông tin.

  • Các lớp tiền xử lý chuyển đổi dữ liệu thô sang định dạng được mô hình chấp nhận. Tokenizer lưu trữ từ điển cho từng mô hình và cung cấp các phương thức để mã hóa và giải mã các chuỗi thành danh sách chỉ số nhúng token. Trình xử lý ảnh tiền xử lý đầu vào thị giác, trình xử lý video tiền xử lý đầu vào video, trình trích xuất đặc trưng tiền xử lý đầu vào âm thanh, và trình xử lý tiền xử lý đầu vào đa phương thức.

Tất cả các lớp này có thể được khởi tạo từ các phiên bản được huấn luyện trước, lưu cục bộ và chia sẻ trên Hub bằng ba phương thức:

  • from_pretrained() cho phép bạn khởi tạo một mô hình, cấu hình và lớp tiền xử lý từ một phiên bản được huấn luyện trước, do chính thư viện cung cấp (các mô hình được hỗ trợ có thể tìm thấy trên Model Hub) hoặc do người dùng lưu trữ cục bộ (hoặc trên một máy chủ).
  • save_pretrained() cho phép bạn lưu cục bộ một model, configuration và preprocessing class để có thể tải lại bằng from_pretrained().
  • push_to_hub() cho phép bạn chia sẻ một mô hình, cấu hình và một lớp tiền xử lý lên Hub, giúp mọi người dễ dàng truy cập.
Update on GitHub