Trong những năm gần đây, hiểu ngôn ngữ tự nhiên (NLU) ngày càng tìm thấy giá trị kinh doanh, được thúc đẩy bởi các cải tiến mô hình cũng như khả năng mở rộng và hiệu quả chi phí của cơ sở hạ tầng dựa trên đám mây. Cụ thể, các Transformer kiến trúc học sâu, thường được triển khai dưới dạng Chứng nhận đã rất thành công, nhưng việc đào tạo, tinh chỉnh và tối ưu hóa các mô hình này đã được chứng minh là một vấn đề đầy thách thức. Nhờ sự Hợp tác giữa AWS và Hugging Face, giờ đây việc đào tạo và tối ưu hóa các mô hình NLU trên Amazon SageMaker sử dụng SageMaker Python SDK, nhưng việc tìm nguồn dữ liệu được gắn nhãn cho các mô hình này vẫn còn khó khăn và tốn thời gian.
Một vấn đề NLU được quan tâm đặc biệt trong kinh doanh là nhiệm vụ trả lời câu hỏi. Trong bài đăng này, chúng tôi trình bày cách xây dựng bộ dữ liệu trả lời câu hỏi tùy chỉnh bằng cách sử dụng Sự thật về mặt đất của Amazon SageMaker để huấn luyện một người ôm mặt trả lời câu hỏi mô hình NLU.
thử thách trả lời câu hỏi
Việc trả lời câu hỏi đòi hỏi một mô hình tự động tạo ra câu trả lời cho một truy vấn được cung cấp một số nội dung văn bản có thể chứa hoặc không chứa câu trả lời. Ví dụ: đưa ra câu hỏi sau, "SageMaker Ground Truth hỗ trợ quy trình làm việc nào?" một mô hình sẽ có thể xác định phân đoạn "hợp nhất chú thích và kiểm tra" trong đoạn sau:
SageMaker Ground Truth giúp cải thiện chất lượng nhãn thông qua hợp nhất chú thích và quy trình kiểm tra. Hợp nhất chú thích là quá trình thu thập đầu vào nhãn từ hai hoặc nhiều trình gắn nhãn dữ liệu và kết hợp chúng để tạo một nhãn dữ liệu duy nhất cho mô hình máy học của bạn. Với quy trình kiểm tra và đánh giá tích hợp sẵn, nhân viên có thể thực hiện xác minh nhãn và thực hiện các điều chỉnh để cải thiện độ chính xác.
Vấn đề này là một thách thức vì nó yêu cầu một mô hình để hiểu ý nghĩa của một câu hỏi, thay vì chỉ thực hiện tìm kiếm từ khóa. Các mô hình chính xác trong lĩnh vực này có thể giảm chi phí hỗ trợ khách hàng thông qua việc hỗ trợ các chatbot thông minh, cung cấp các sản phẩm trợ lý giọng nói chất lượng cao và thúc đẩy doanh thu của cửa hàng trực tuyến thông qua trả lời câu hỏi về sản phẩm được cá nhân hóa. Một bộ dữ liệu lớn trong lĩnh vực này là Bộ dữ liệu trả lời câu hỏi của Stanford (SQuAD), một bộ dữ liệu trả lời câu hỏi đa dạng trình bày một mô hình có các đoạn văn bản ngắn và yêu cầu mô hình dự đoán vị trí của đoạn văn bản trả lời trong đoạn văn. SQuAD là một bộ dữ liệu đọc hiểu, bao gồm các câu hỏi được đặt ra bởi những người làm việc theo đám đông trên một tập hợp các bài viết trên Wikipedia, trong đó câu trả lời cho mọi câu hỏi là một đoạn văn bản từ đoạn văn tương ứng hoặc được đánh dấu là không thể trả lời.
Một thách thức trong việc điều chỉnh SQuAD cho các trường hợp sử dụng kinh doanh là tạo bộ dữ liệu tùy chỉnh dành riêng cho miền. Quá trình tạo bộ dữ liệu câu hỏi và câu trả lời mới này yêu cầu giao diện người dùng chuyên biệt cho phép người chú thích đánh dấu các khoảng và thêm câu hỏi vào các khoảng đó. Nó cũng phải có khả năng hỗ trợ thêm các câu hỏi bất khả thi để hỗ trợ định dạng SQuAD 2.0, bao gồm các câu hỏi không thể trả lời. Những câu hỏi bất khả thi này giúp người mẫu hiểu thêm về những truy vấn nào không thể trả lời bằng cách sử dụng đoạn văn đã cho. Các mẫu công nhân tùy chỉnh trong Ground Truth đơn giản hóa việc tạo các bộ dữ liệu này bằng cách cung cấp cho nhân viên trải nghiệm chú thích phù hợp để tạo bộ dữ liệu câu hỏi và câu trả lời.
Tổng quan về giải pháp
Giải pháp này tạo và quản lý các công việc gắn nhãn Ground Truth để gắn nhãn tập dữ liệu câu hỏi-câu trả lời tùy chỉnh dành riêng cho miền bằng cách sử dụng giao diện người dùng chú thích tùy chỉnh. Chúng tôi sử dụng SageMaker để đào tạo, tinh chỉnh, tối ưu hóa và triển khai một Hugging Face
Mô hình BERT được xây dựng bằng PyTorch trên bộ dữ liệu trả lời câu hỏi tùy chỉnh.
Bạn có thể thực hiện giải pháp bằng cách triển khai được cung cấp Hình thành đám mây AWS mẫu trong tài khoản AWS của bạn. AWS CloudFormation xử lý việc triển khai AWS Lambda các chức năng hỗ trợ tiền chú thích và hợp nhất chú thích cho giao diện người dùng chú thích. Nó cũng tạo ra một Dịch vụ lưu trữ đơn giản của Amazon thùng (Amazon S3) và Quản lý truy cập và nhận dạng AWS (IAM) các vai trò sẽ sử dụng khi tạo công việc ghi nhãn.
Bài đăng này hướng dẫn bạn cách thực hiện như sau:
- Tạo bộ dữ liệu trả lời câu hỏi của riêng bạn hoặc bổ sung bộ dữ liệu hiện có bằng cách sử dụng Ground Truth
- Sử dụng bộ dữ liệu Hugging Face để kết hợp và mã hóa văn bản
- Tinh chỉnh mô hình BERT trên dữ liệu trả lời câu hỏi của bạn bằng cách sử dụng khóa đào tạo SageMaker
- Triển khai mô hình của bạn đến điểm cuối SageMaker và trực quan hóa kết quả của bạn
Giao diện người dùng chú thích
Chúng tôi sử dụng một cái mới mẫu nhiệm vụ công nhân tùy chỉnh với Ground Truth để thêm các chú thích mới vào bộ dữ liệu SQuAD hiện có. Giải pháp này cung cấp một mẫu tác vụ worker cũng như hàm Lambda trước chú thích (xử lý việc đưa dữ liệu vào giao diện người dùng) và hàm Lambda sau chú thích (trích xuất kết quả từ giao diện người dùng sau khi hoàn tất việc dán nhãn).
Mẫu nhiệm vụ nhân viên tùy chỉnh này cung cấp cho bạn khả năng đánh dấu văn bản trong ngăn bên phải, sau đó thêm câu hỏi tương ứng vào ngăn bên trái có liên quan đến văn bản được đánh dấu. Văn bản được tô sáng ở khung bên phải cũng có thể được thêm vào bất kỳ câu hỏi nào đã tạo trước đó. Hơn nữa, bạn có thể thêm các câu hỏi không thể theo Biệt đội 2.0 định dạng. Các câu hỏi bất khả thi cho phép các mô hình giảm số lần đoán sai không đáng tin cậy khi đoạn văn không thể trả lời câu hỏi.
Giao diện người dùng này sử dụng cùng một lược đồ JSON như bộ dữ liệu SQuAD 2.0, có nghĩa là nó có thể hoạt động trên nhiều bài viết và đoạn văn, hiển thị một đoạn văn tại một thời điểm bằng cách sử dụng trước và Sau nút. Giao diện người dùng giúp dễ dàng theo dõi và xác định công việc ghi nhãn mà mỗi người chú thích cần hoàn thành trong bước gửi tác vụ.
Bởi vì giao diện người dùng chú thích được chứa trong một Chất lỏng Tệp HTML, bạn có thể tùy chỉnh trải nghiệm ghi nhãn với kiến thức về JavaScript cơ bản. Bạn cũng có thể sửa đổi Thẻ lỏng để chuyển thông tin bổ sung vào giao diện người dùng ghi nhãn và bạn có thể tự sửa đổi mẫu để bao gồm hướng dẫn nhân viên chi tiết hơn.
Chi phí ước tính
Việc triển khai giải pháp này có thể phát sinh chi phí tối đa khoảng 20 đô la, chưa tính đến chi phí ghi nhãn của con người. Amazon S3, Lambda, SageMaker và Ground Truth đều cung cấp Cấp miễn phí AWS, có tính phí cho việc sử dụng bổ sung. Để biết thêm thông tin, hãy xem các trang định giá sau:
- Giá Amazon S3
- Định giá AWS Lambda
- Amazon SageMaker Giá
- Định giá ghi nhãn dữ liệu Amazon SageMaker – Phí này phụ thuộc vào loại lao động mà bạn sử dụng. Nếu bạn là người dùng mới của Ground Truth, chúng tôi khuyên bạn nên sử dụng lực lượng lao động tư nhân và kể cả bạn với tư cách là nhân viên để kiểm tra cấu hình công việc ghi nhãn của bạn.
Điều kiện tiên quyết
Để thực hiện giải pháp này, bạn cần có các điều kiện tiên quyết sau:
- An Tài khoản AWS.
- Làm quen với Sự thật mặt đất. Để biết thêm thông tin, hãy tham khảo Sử dụng Amazon SageMaker Ground Truth để gắn nhãn dữ liệu.
- Quen thuộc với AWS CloudFormation. Để biết thêm thông tin, hãy tham khảo Hướng dẫn sử dụng AWS CloudFormation.
- một nhà hiền triết lực lượng lao động. Đối với cuộc biểu tình này, chúng tôi sử dụng một lực lượng lao động tư nhân. Bạn có thể tạo lực lượng lao động trên bảng điều khiển SageMaker.
GIF sau minh họa cách tạo lực lượng lao động tư nhân. Để biết hướng dẫn, hãy xem Tạo lực lượng lao động ẩn danh của Amazon bằng cách sử dụng trang đội ngũ nhân công gắn nhãn.
Khởi chạy ngăn xếp CloudFormation
Bây giờ bạn đã thấy cấu trúc của giải pháp, bạn triển khai nó vào tài khoản của mình để có thể chạy quy trình công việc mẫu. Tất cả các bước triển khai liên quan đến quy trình ghi nhãn đều do AWS CloudFormation quản lý. Điều này có nghĩa là AWS CloudFormation tạo các hàm Lambda hợp nhất chú thích trước và chú thích của bạn, cũng như một bộ chứa S3 để lưu trữ dữ liệu đầu vào và đầu ra.
Bạn có thể khởi chạy ngăn xếp trong Khu vực AWS us-east-1
trên bảng điều khiển AWS CloudFormation bằng cách sử dụng Khởi chạy Stack cái nút. Để khởi chạy ngăn xếp ở một Khu vực khác, hãy sử dụng các hướng dẫn có trong README của Kho GitHub.
vận hành sổ ghi chép
Sau khi giải pháp đã được triển khai cho tài khoản của bạn, một phiên bản sổ ghi chép có tên gt-hf-squad-notebook
có sẵn trong tài khoản của bạn. Để bắt đầu vận hành sổ ghi chép, hãy hoàn thành các bước sau:
- Trên bảng điều khiển Amazon SageMaker, điều hướng đến trang phiên bản sổ ghi chép.
- Chọn Mở JupyterLab để mở ví dụ.
- Bên trong phiên bản, duyệt đến kho lưu trữ
hf-gt-custom-qa
và mở cuốn sổhf_squad_finetuning.ipynb
. - Chọn
conda_pytorch_p38
như hạt nhân của bạn.
Bây giờ bạn đã tạo một phiên bản sổ ghi chép và mở sổ ghi chép, bạn có thể chạy các ô trong sổ ghi chép để vận hành giải pháp. Phần còn lại của bài đăng này cung cấp các chi tiết bổ sung cho từng phần trong sổ ghi chép khi bạn tiếp tục.
Tải xuống và kiểm tra dữ liệu
Sản phẩm Tập dữ liệu SQuAD chứa tập dữ liệu huấn luyện cũng như tập dữ liệu thử nghiệm và phát triển. Sổ ghi chép tải xuống tập dữ liệu SQuAD2.0 cho bạn nhưng bạn có thể chọn phiên bản SQuAD sẽ sử dụng bằng cách sửa đổi ô sổ ghi chép bên dưới Tải xuống và kiểm tra dữ liệu.
SQuAD được thành lập bởi Pranav Rajpurkar, Jian Zhang, Konstantin Lopyrev và Percy Liang. Để biết thêm thông tin, hãy tham khảo bản gốc và tập dữ liệu. SQuAD đã được cấp phép bởi các tác giả theo Giấy phép Công cộng Quốc tế Creative Commons Ghi công-Chia sẻ tương tự 4.0.
Hãy xem một cặp câu hỏi và câu trả lời ví dụ từ SQuAD:
Tiêu đề đoạn văn: Immune_system
Hệ thống miễn dịch là một hệ thống gồm nhiều cấu trúc và quá trình sinh học bên trong một sinh vật giúp bảo vệ chống lại bệnh tật. Để hoạt động bình thường, hệ thống miễn dịch phải phát hiện nhiều loại tác nhân, được gọi là mầm bệnh, từ vi rút đến giun ký sinh và phân biệt chúng với mô khỏe mạnh của chính sinh vật. Ở nhiều loài, hệ thống miễn dịch có thể được phân loại thành các hệ thống con, chẳng hạn như hệ thống miễn dịch bẩm sinh so với hệ thống miễn dịch thích ứng, hoặc miễn dịch thể dịch so với miễn dịch qua trung gian tế bào. Ở người, hàng rào máu-não, hàng rào máu-dịch não tủy và các hàng rào chất lỏng-não tương tự tách hệ thống miễn dịch ngoại biên khỏi hệ thống miễn dịch thần kinh bảo vệ não.
Câu hỏi: Hệ miễn dịch bảo vệ sinh vật chống lại cái gì?
Đáp án: bệnh
tải mô hình
Bây giờ bạn đã xem một cặp câu hỏi và câu trả lời ví dụ trong SQuAD, bạn có thể tải xuống một mô hình mà bạn có thể tinh chỉnh để trả lời câu hỏi. Hugging Face cho phép bạn dễ dàng tải xuống một mô hình cơ sở đã trải qua quá trình đào tạo trước quy mô lớn và khởi tạo lại mô hình đó cho một tác vụ tiếp theo khác. Trong trường hợp này, bạn tải xuống distilbert-base-uncased
mô hình hóa và tái sử dụng nó để trả lời câu hỏi bằng cách sử dụng AutoModelForQuestionAnswering
lớp từ Ôm Mặt. Bạn cũng sử dụng AutoTokenizer
class để truy xuất mã thông báo được đào tạo trước của mô hình. Chúng tôi đi sâu hơn vào mô hình mà chúng tôi sử dụng sau này trong bài đăng.
Xem đầu vào BERT
BERT yêu cầu bạn chuyển đổi dữ liệu văn bản thành biểu diễn số được gọi là thẻ. Có nhiều loại mã thông báo có sẵn; các mã thông báo sau được tạo bởi một trình mã thông báo được thiết kế riêng cho BERT mà bạn khởi tạo bằng một từ vựng đã đặt. Mỗi mã thông báo ánh xạ tới một từ trong từ vựng. Hãy xem xét câu hỏi và bối cảnh hệ thống miễn dịch đã biến đổi mà bạn cung cấp BERT để suy luận.
suy luận mô hình
Bây giờ bạn đã thấy BERT lấy gì làm đầu vào, hãy xem cách bạn có thể nhận được kết quả suy luận từ mô hình. Đoạn mã sau trình bày cách sử dụng đầu vào được mã hóa đã tạo trước đó và trả về kết quả suy luận từ mô hình. Tương tự như cách BERT không thể chấp nhận văn bản thô làm đầu vào, nó cũng không tạo văn bản thô làm đầu ra. Bạn dịch đầu ra của BERT bằng cách xác định điểm bắt đầu và điểm kết thúc trong đoạn văn mà BERT đã xác định là câu trả lời. Sau đó, bạn ánh xạ đầu ra đó tới mã thông báo của chúng tôi và quay lại văn bản tiếng Anh.
Kết quả dịch như sau:
Câu hỏi: Hệ miễn dịch bảo vệ sinh vật chống lại cái gì?
Đáp án: bệnh
Tăng Cường Tiểu Đội
Tiếp theo, để có được dữ liệu được dán nhãn bổ sung, chúng tôi sử dụng một mẫu nhiệm vụ công nhân tùy chỉnh trong Sự thật mặt đất. Đầu tiên chúng ta có thể tạo một bài báo mới ở định dạng SQuAD. Sổ ghi chép này sao chép tệp này từ kho lưu trữ sang Amazon S3, nhưng vui lòng thực hiện bất kỳ chỉnh sửa nào trước khi chạy Tăng Cường Tiểu Đội tế bào. Định dạng của SQuAD được hiển thị trong đoạn mã sau. Mỗi tệp JSON của SQuAD chứa nhiều bài báo được lưu trữ trong data
chìa khóa. Mỗi bài viết có một title
trường và một hoặc nhiều đoạn văn. Các đoạn này chứa các đoạn văn bản được gọi là context
và bất kỳ câu hỏi liên quan trong qas
danh sách. Bởi vì chúng tôi đang chú thích từ đầu, chúng tôi có thể để lại qas
danh sách trống và chỉ cung cấp ngữ cảnh. Giao diện người dùng có thể lặp qua cả đoạn văn và bài viết, cho phép bạn thực hiện từng tác vụ của nhân viên lớn hoặc nhỏ tùy ý.
Sau khi chúng tôi tạo tệp dữ liệu SQuAD mẫu, chúng tôi cần tạo Sự thật cơ bản tệp kê khai tăng đề cập đến dữ liệu đầu vào của chúng tôi. Chúng tôi thực hiện việc này bằng cách tạo một tệp định dạng dòng JSON có “source
” tương ứng với vị trí trong Amazon S3 nơi chúng tôi lưu trữ dữ liệu SQuAD đầu vào của mình:
Truy cập cổng thông tin dán nhãn
Sau khi bạn gửi công việc đến Ground Truth, bạn có thể xem công việc gắn nhãn đã tạo trên bảng điều khiển Ground Truth.
Để thực hiện ghi nhãn, bạn cần đăng nhập vào tài khoản cổng thông tin nhân viên mà bạn đã tạo như một phần của các bước điều kiện tiên quyết. Công việc của bạn có sẵn trong cổng nhân viên sau vài phút tiền xử lý. Sau khi mở nhiệm vụ, bạn sẽ thấy mẫu nhân viên tùy chỉnh cho chú thích Hỏi & Đáp. Bạn có thể thêm câu hỏi bằng cách đánh dấu các phần văn bản trong ngữ cảnh, sau đó chọn Thêm Câu hỏi.
Kiểm tra trạng thái công việc dán nhãn
Sau khi gửi, bạn có thể chạy Kiểm tra trạng thái công việc dán nhãn ô để xem công việc ghi nhãn của bạn đã hoàn tất chưa. Đợi hoàn thành trước khi chuyển sang các ô tiếp theo.
Tải dữ liệu được dán nhãn
Sau khi gắn nhãn, tệp kê khai đầu ra chứa một mục có tên thuộc tính nhãn của bạn (trong trường hợp này squad-1626282229
) chứa URI S3 tới dữ liệu có định dạng SQuAD mà bạn có thể sử dụng trong quá trình đào tạo. Xem nội dung bảng kê khai đầu ra sau đây:
Mỗi dòng trong tệp kê khai tương ứng với một tác vụ worker.
Tải bộ tàu SQuAD
Ôm Mặt có một gói dữ liệu cung cấp cho bạn khả năng tải xuống và xử lý trước SQuAD, nhưng để thêm các câu hỏi và câu trả lời tùy chỉnh của chúng tôi, chúng tôi cần thực hiện một chút xử lý. SQuAD được cấu trúc xung quanh các nhóm chủ đề. Mỗi chủ đề có nhiều câu lệnh ngữ cảnh khác nhau và mỗi câu lệnh ngữ cảnh có các cặp câu hỏi và câu trả lời. Vì chúng tôi muốn tạo các câu hỏi của riêng mình để đào tạo, chúng tôi cần kết hợp các câu hỏi của mình với SQuAD. Thật may mắn cho chúng tôi, các chú thích của chúng tôi đã ở định dạng SQuAD, vì vậy chúng tôi có thể lấy các nhãn ví dụ của mình và nối chúng dưới dạng chủ đề mới vào dữ liệu SQuAD hiện có.
Tạo một đối tượng Tập dữ liệu khuôn mặt ôm
Để đưa dữ liệu của chúng tôi sang định dạng bộ dữ liệu của Hugging Face, chúng tôi có một số tùy chọn. Chúng ta có thể sử dụng tập dữ liệu tải tùy chọn, trong trường hợp đó, chúng tôi có thể cung cấp tệp CSV, JSON hoặc tệp văn bản được tải dưới dạng đối tượng tập dữ liệu. Bạn cũng có thể cung cấp load_dataset
với một tập lệnh xử lý để chuyển đổi tệp của bạn sang định dạng mong muốn. Đối với bài đăng này, thay vào đó chúng tôi sử dụng Dataset.from_dict()
phương thức, cho phép chúng tôi cung cấp từ điển trong bộ nhớ để tạo đối tượng tập dữ liệu. Chúng tôi cũng xác định các tính năng tập dữ liệu của mình. Chúng ta có thể xem các tính năng bằng cách sử dụng Trình xem dữ liệu của Hugging Face, như thể hiện trong ảnh chụp màn hình sau đây.
Các tính năng của chúng tôi như sau:
- ID – ID của văn bản
- tiêu đề – Tiêu đề liên quan cho chủ đề
- bối cảnh – Câu lệnh ngữ cảnh mà mô hình phải tìm kiếm để tìm câu trả lời
- câu hỏi – Câu hỏi người mẫu đang được hỏi
- trả lời – Văn bản câu trả lời được chấp nhận và vị trí trong câu lệnh ngữ cảnh
Bộ dữ liệu Hugging Face dễ dàng cho phép chúng tôi xác định lược đồ này:
Sau khi chúng tôi tạo đối tượng tập dữ liệu của mình, chúng tôi phải token hóa văn bản. Bởi vì các mô hình không thể chấp nhận văn bản thô làm đầu vào, chúng tôi cần chuyển đổi văn bản của mình thành đầu vào số mà nó có thể hiểu được, còn được gọi là mã thông báo. Tokenization là mô hình cụ thể, vì vậy hãy hiểu mô hình mà chúng tôi sẽ tinh chỉnh. Chúng tôi đang sử dụng một distillbert-base-uncased người mẫu. Nó trông rất giống với BERT: nó sử dụng nhúng đầu vào, chú ý nhiều đầu (để biết thêm thông tin về thao tác này, hãy tham khảo Máy biến áp được minh họa) và chuyển tiếp các lớp, nhưng có một nửa tham số của mô hình cơ sở BERT ban đầu. Xem các lớp mô hình ban đầu sau:
Hãy chia nhỏ từng thành phần của tiêu đề mô hình. Tên distilbert
biểu thị thực tế rằng đây là phiên bản chắt lọc của mô hình cơ sở BERT, thu được thông qua một quy trình gọi là chắt lọc kiến thức. Chắt lọc kiến thức cho phép chúng tôi đào tạo một mô hình học sinh nhỏ hơn không chỉ dựa trên dữ liệu đào tạo mà còn cả các câu trả lời cho cùng một tập huấn luyện từ một mô hình giáo viên lớn hơn được đào tạo trước. base
đề cập đến kích thước của mô hình, trong trường hợp này, mô hình được chắt lọc từ mô hình cơ sở BERT (trái ngược với mô hình lớn BERT). uncased
đề cập đến văn bản nó đã được đào tạo trên. Trong trường hợp này, văn bản không tính đến trường hợp; tất cả các văn bản nó đã được đào tạo là chữ thường. Các uncased
khía cạnh ảnh hưởng trực tiếp đến cách chúng tôi mã hóa văn bản của mình. Rất may, ngoài việc cung cấp khả năng truy cập dễ dàng để tải xuống các mô hình máy biến áp, Hugging Face còn cung cấp mã thông báo đi kèm của mô hình. Chúng tôi cũng đã tải xuống một mã thông báo tùy chỉnh cho distilbert-base-uncased model
mà chúng tôi hiện đang sử dụng để chuyển đổi văn bản của mình:
Một tính năng khác của lớp tập dữ liệu là nó cho phép chúng tôi chạy tiền xử lý và mã thông báo song song với chức năng bản đồ của nó. Chúng tôi định nghĩa một chức năng xử lý và sau đó chuyển nó sang phương thức bản đồ.
Để trả lời câu hỏi, Ôm mặt cần một số thành phần (cũng được định nghĩa trong thuật ngữ):
- mặt nạ chú ý – Mặt nạ cho biết mô hình cần chú ý đến mã thông báo nào, được sử dụng chủ yếu để phân biệt giữa văn bản thực tế và mã thông báo đệm
- vị trí bắt đầu – Vị trí bắt đầu của câu trả lời trong văn bản
- vị trí cuối – Vị trí kết thúc câu trả lời trong văn bản
- input_ids – Chỉ số mã thông báo ánh xạ mã thông báo tới từ vựng
Trình mã thông báo của chúng tôi sẽ mã hóa văn bản, nhưng chúng tôi cần nắm bắt rõ ràng vị trí bắt đầu và kết thúc của câu trả lời, đó là lý do tại sao chúng tôi đã xác định chức năng tiền xử lý tùy chỉnh. Bây giờ chúng ta đã sẵn sàng đầu vào, hãy bắt đầu đào tạo!
Ra mắt công việc đào tạo
Chúng tôi có thể chạy đào tạo trong sổ ghi chép của mình, nhưng các loại phiên bản mà chúng tôi cần để đào tạo mô hình Hỏi & Đáp của mình trong một khoảng thời gian hợp lý, phiên bản p3 và p4, khá hiệu quả. Những trường hợp này có xu hướng quá mức cần thiết để chạy sổ ghi chép hoặc liên tục Đám mây điện toán đàn hồi Amazon (Amazon EC2). Đây là lúc cần đến quá trình đào tạo SageMaker. Quá trình đào tạo SageMaker cho phép bạn khởi chạy một công việc đào tạo trên một hoặc nhiều phiên bản cụ thể chỉ trong khoảng thời gian của công việc đào tạo. Điều này cho phép chúng tôi chạy trên các phiên bản lớn hơn như p4d.24xlarge, với 8 GPU NVIDIA A100, nhưng không phải lo lắng về việc sử dụng một hóa đơn khổng lồ trong trường hợp chúng tôi quên tắt nó. Nó cũng giúp chúng tôi dễ dàng truy cập vào các chức năng khác của SageMaker, như Thử nghiệm SageMaker để theo dõi quá trình đào tạo ML của bạn và Trình gỡ lỗi SageMaker để hiểu và lập hồ sơ công việc đào tạo của bạn.
đào tạo địa phương
Hãy bắt đầu bằng cách tìm hiểu cách đào tạo mô hình trong Hugging Face hoạt động cục bộ, sau đó xem qua các điều chỉnh mà chúng tôi thực hiện để chạy mô hình trong SageMaker.
Hugging Face giúp việc đào tạo trở nên dễ dàng thông qua việc sử dụng lớp huấn luyện viên của họ. Lớp huấn luyện viên cho phép chúng tôi chuyển vào mô hình, bộ dữ liệu đào tạo và xác thực, siêu tham số và thậm chí cả mã thông báo của chúng tôi. Bởi vì chúng tôi đã có mô hình cũng như bộ đào tạo và xác nhận của mình, chúng tôi chỉ cần xác định siêu tham số của mình. Chúng ta có thể làm điều này thông qua TrainingArguments
lớp học. Điều này cho phép chúng tôi chỉ định những thứ như tốc độ học tập, kích thước lô, số lượng kỷ nguyên và các thông số chuyên sâu hơn như phân rã trọng số hoặc chiến lược lập lịch trình tốc độ học tập. Sau khi chúng tôi xác định của chúng tôi TrainingArguments
, chúng ta có thể chuyển vào mô hình, tập huấn luyện, tập hợp lệ và các đối số để khởi tạo lớp huấn luyện của mình. Sau đó, chúng ta có thể chỉ cần gọi trainer.train()
để bắt đầu đào tạo mô hình của chúng tôi. Khối mã sau minh họa cách chạy đào tạo cục bộ:
Gửi dữ liệu đến S3
Làm điều tương tự trong đào tạo SageMaker rất đơn giản. Bước đầu tiên là đưa dữ liệu của chúng tôi vào Amazon S3 để mô hình của chúng tôi có thể truy cập dữ liệu đó. Đào tạo SageMaker cho phép bạn chỉ định nguồn dữ liệu; bạn có thể sử dụng các nguồn như Amazon S3, Hệ thống tệp đàn hồi Amazon (Amazon EFS) hoặc Amazon FSx cho ánh để nhập dữ liệu hiệu suất cao. Trong trường hợp của chúng tôi, tập dữ liệu SQuAD tăng cường của chúng tôi không đặc biệt lớn, vì vậy Amazon S3 là một lựa chọn tốt. Chúng tôi tải dữ liệu đào tạo của mình lên một thư mục trong Amazon S3 và khi SageMaker khởi chạy phiên bản đào tạo của chúng tôi, nó sẽ tải xuống dữ liệu từ vị trí được chỉ định của chúng tôi.
Khởi tạo mô hình
Để khởi chạy công việc đào tạo của mình, chúng ta có thể sử dụng công cụ ước tính Hugging Face tích hợp sẵn trong SDK SageMaker. SageMaker sử dụng lớp công cụ ước tính để xác định các tham số cho công việc đào tạo cũng như số lượng và loại phiên bản sẽ sử dụng để đào tạo. Khóa đào tạo SageMaker được xây dựng xung quanh việc sử dụng bộ chứa Docker. Bạn có thể sử dụng vùng chứa mặc định trong SageMaker hoặc cung cấp vùng chứa tùy chỉnh của riêng mình để đào tạo. Trong trường hợp các mô hình Hugging Face, SageMaker đã tích hợp sẵn các bộ chứa Hugging Face với tất cả các thành phần phụ thuộc mà bạn cần để chạy các công việc đào tạo Hugging Face. Tất cả những gì chúng ta cần làm là xác định tập lệnh đào tạo mà bộ chứa Hugging Face của chúng ta sử dụng làm điểm vào.
Trong tập lệnh đào tạo này, chúng tôi xác định các đối số mà chúng tôi chuyển đến điểm vào của mình dưới dạng một tập hợp các siêu đường kính, cũng như mã đào tạo của chúng tôi. Mã đào tạo của chúng tôi giống như khi chúng tôi chạy nó cục bộ; chúng ta chỉ có thể sử dụng TrainingArguments
và sau đó chuyển chúng đến một đối tượng huấn luyện. Sự khác biệt duy nhất là chúng ta cần chỉ định vị trí đầu ra cho mô hình của mình ở /opt/ml/model
để chương trình đào tạo SageMaker có thể lấy, đóng gói và gửi tới Amazon S3. Khối mã sau đây cho thấy cách khởi tạo công cụ ước tính Hugging Face của chúng tôi:
Tinh chỉnh mô hình
Đối với công việc đào tạo cụ thể của mình, chúng tôi sử dụng phiên bản p3.8xlarge bao gồm 4 GPU V100. Lớp huấn luyện tự động hỗ trợ đào tạo trên các phiên bản đa GPU, vì vậy chúng tôi không cần bất kỳ thiết lập bổ sung nào để giải quyết vấn đề này. Chúng tôi đào tạo mô hình của mình trong hai kỷ nguyên, với kích thước lô là 16 và tỷ lệ học tập là 4e5. Chúng tôi cũng đang cho phép đào tạo độ chính xác hỗn hợp, sử dụng độ chính xác hỗn hợp ở những khu vực mà chúng tôi có thể giảm độ chính xác bằng số mà không ảnh hưởng đến độ chính xác của mô hình. Điều này làm tăng tốc độ đào tạo và bộ nhớ khả dụng của chúng tôi. Để khởi chạy công việc đào tạo, chúng tôi gọi fit
phương pháp từ chúng tôi huggingface_estimator
lớp học.
Khi mô hình của chúng tôi được đào tạo xong, chúng tôi có thể tải mô hình xuống cục bộ và tải mô hình đó vào bộ nhớ của sổ ghi chép để kiểm tra mô hình, điều này được minh họa trong sổ ghi chép. Chúng tôi sẽ tập trung vào một tùy chọn khác, triển khai nó dưới dạng điểm cuối SageMaker!
Triển khai mô hình được đào tạo
Ngoài việc cung cấp các tiện ích để đào tạo, SageMaker cũng có thể cho phép các nhà khoa học dữ liệu và kỹ sư ML dễ dàng triển khai các điểm cuối REST cho các mô hình được đào tạo của họ. Bạn có thể triển khai các mô hình được đào tạo trong hoặc ngoài SageMaker. Để biết thêm thông tin, hãy tham khảo Triển khai Mô hình trong Amazon SageMaker.
Vì mô hình của chúng tôi đã được đào tạo trong SageMaker nên nó đã ở định dạng chính xác để triển khai dưới dạng điểm cuối. Tương tự như đào tạo, chúng tôi xác định một lớp mô hình SageMaker xác định mô hình, cung cấp mã cũng như số lượng và loại phiên bản mà chúng tôi muốn triển khai làm điểm cuối. Cũng tương tự như đào tạo, việc phân phát dựa trên bộ chứa Docker và chúng tôi có thể sử dụng một trong các bộ chứa SageMaker tích hợp sẵn hoặc cung cấp bộ chứa của riêng mình. Đối với bài đăng này, chúng tôi sử dụng bộ chứa phục vụ PyTorch tích hợp sẵn, vì vậy chúng tôi chỉ cần xác định một số điều để thiết lập và chạy điểm cuối của mình. Mã phục vụ của chúng tôi cần bốn chức năng:
- người mẫu_fn – Xác định cách điểm cuối tải mô hình (chỉ thực hiện việc này một lần và sau đó lưu vào bộ nhớ cho các dự đoán tiếp theo)
- đầu vào_fn – Xác định cách đầu vào được giải tuần tự hóa và xử lý
- dự đoán_fn – Xác định cách mô hình của chúng tôi đưa ra dự đoán về đầu vào của chúng tôi
- đầu ra_fn – Xác định cách định dạng điểm cuối và gửi lại dữ liệu đầu ra cho máy khách thực hiện yêu cầu
Sau khi chúng tôi xác định các chức năng này, chúng tôi có thể triển khai điểm cuối của mình và chuyển cho nó các câu hỏi và câu hỏi ngữ cảnh cũng như trả về câu trả lời dự đoán của nó:
Trực quan hóa kết quả mô hình
Vì chúng tôi đã triển khai điểm cuối SageMaker cho phép chúng tôi gửi câu lệnh ngữ cảnh và nhận câu trả lời, nên chúng tôi có thể quay lại và trực quan hóa kết quả suy luận trong trình xem SQuAD ban đầu để hình dung rõ hơn những gì mô hình của chúng tôi tìm thấy trong ngữ cảnh đoạn văn. Chúng tôi thực hiện việc này bằng cách định dạng lại kết quả suy luận thành định dạng SQuAD, sau đó thay thế các thẻ Liquid trong mẫu worker bằng JSON có định dạng SQuAD. Sau đó, chúng tôi có thể iframe giao diện người dùng kết quả bên trong mẫu nhân viên của mình để xem xét lặp lại các kết quả trong ngữ cảnh của một sổ ghi chép, như minh họa trong ảnh chụp màn hình sau. Mỗi câu hỏi ở bên trái có thể được bấm để đánh dấu các đoạn văn bản ở bên phải phù hợp với truy vấn. Không có câu hỏi nào được chọn, tất cả các khoảng văn bản được đánh dấu ở bên phải như hình bên dưới.
Làm sạch
Để tránh phát sinh phí trong tương lai, hãy chạy Làm sạch của sổ ghi chép để xóa tất cả tài nguyên, bao gồm điểm cuối SageMaker, đối tượng S3 chứa tập dữ liệu thô và đã xử lý cũng như ngăn xếp CloudFormation. Khi quá trình xóa hoàn tất, hãy đảm bảo dừng và xóa phiên bản sổ ghi chép đang lưu trữ tập lệnh sổ ghi chép hiện tại.
Kết luận
Trong bài đăng này, bạn đã học cách tạo bộ dữ liệu trả lời câu hỏi của riêng mình bằng Ground Truth và kết hợp nó với SQuAD để huấn luyện và triển khai mô hình trả lời câu hỏi của riêng bạn bằng SageMaker. Sau khi bạn hoàn thành sổ ghi chép, bạn có một điểm cuối SageMaker đã triển khai đã được đào tạo trên tập dữ liệu Hỏi & Đáp tùy chỉnh của bạn. Điểm cuối này đã sẵn sàng để tích hợp vào quy trình công việc NLU sản xuất của bạn, bởi vì điểm cuối SageMaker có sẵn thông qua API REST tiêu chuẩn. Bạn cũng có tập dữ liệu tùy chỉnh được chú thích ở định dạng SQuAD 2.0, cho phép bạn đào tạo lại mô hình hiện tại của mình hoặc thử đào tạo các kiến trúc mô hình trả lời câu hỏi khác. Cuối cùng, bạn có một cơ chế để nhanh chóng trực quan hóa các kết quả từ suy luận của mình bằng cách tải mẫu worker vào sổ ghi chép cục bộ của bạn.
Hãy thử sổ tay, bổ sung nó bằng các câu hỏi của riêng bạn, đồng thời đào tạo và triển khai mô hình trả lời câu hỏi tùy chỉnh của riêng bạn cho các trường hợp sử dụng NLU của bạn!
Chúc bạn xây dựng vui vẻ!
Về các tác giả
Jeremy Feltracco là Kỹ sư phát triển phần mềm của Phòng thí nghiệm giải pháp Amazon ML tại Amazon Web Services. Anh ấy sử dụng kiến thức nền tảng của mình về thị giác máy tính, robot và máy học để giúp khách hàng AWS đẩy nhanh việc áp dụng AI của họ.
Vidya Sagar Ravipati là Quản lý tại Phòng thí nghiệm giải pháp Amazon ML, nơi anh ấy tận dụng kinh nghiệm rộng lớn của mình trong các hệ thống phân tán quy mô lớn và niềm đam mê học máy của mình để giúp khách hàng AWS trên các ngành dọc khác nhau đẩy nhanh việc áp dụng AI và đám mây của họ. Trước đây, anh ấy là Kỹ sư Máy học trong Dịch vụ Kết nối tại Amazon, người đã giúp xây dựng các nền tảng bảo trì dự đoán và cá nhân hóa.
Isaac Privitera là Nhà khoa học dữ liệu cao cấp tại Phòng thí nghiệm Giải pháp Học máy của Amazon, nơi ông phát triển các giải pháp học máy và học sâu dành riêng để giải quyết các vấn đề kinh doanh của khách hàng. Anh ấy làm việc chủ yếu trong không gian thị giác máy tính, tập trung vào việc tạo điều kiện cho khách hàng AWS được đào tạo phân tán và học tập tích cực.
- Coinsmart. Sàn giao dịch Bitcoin và tiền điện tử tốt nhất Châu Âu.
- Platoblockchain. Web3 Metaverse Intelligence. Khuếch đại kiến thức. TRUY CẬP MIỄN PHÍ.
- CryptoHawk. Radar Altcoin. Dùng thử miễn phí.
- Nguồn: https://aws.amazon.com/blogs/machine-learning/build-a-custom-qa-dataset-using-amazon-sagemaker-ground-truth-to-train-a-hugging-face-qa- mô hình nlu /
- "
- &
- 000
- 10
- 100
- 116
- 28
- 39
- 3d
- 7
- 9
- Giới thiệu
- đẩy nhanh tiến độ
- truy cập
- Theo
- Tài khoản
- Kế toán
- chính xác
- ngang qua
- hoạt động
- Ngoài ra
- thêm vào
- địa chỉ
- Nhận con nuôi
- đại lý
- AI
- Tất cả
- Cho phép
- Đã
- đàn bà gan dạ
- Amazon Web Services
- số lượng
- Một
- trả lời
- API
- kiến trúc
- KHU VỰC
- đối số
- xung quanh
- bài viết
- bài viết
- Trợ lý
- sự chú ý
- kiểm toán
- tăng cường
- tác giả
- Tự động
- Tự động
- có sẵn
- AWS
- lý lịch
- rào cản
- rào cản
- Bắt đầu
- được
- phía dưới
- Hóa đơn
- Một chút
- Chặn
- thân hình
- biên giới
- xây dựng
- được xây dựng trong
- kinh doanh
- cuộc gọi
- Có thể có được
- nắm bắt
- trường hợp
- thách thức
- thách thức
- tải
- Chọn
- tốt nghiệp lớp XNUMX
- đám mây
- mã
- Thu
- thành phần
- Tính
- máy tính
- Cấu hình
- Kết nối
- An ủi
- hợp nhất
- Container
- Container
- chứa
- nội dung
- nhà thầu
- Tương ứng
- Chi phí
- tạo
- tạo ra
- tạo ra
- Tạo
- Current
- khách hàng
- khách hàng
- Hỗ trợ khách hàng
- khách hàng
- dữ liệu
- nhà khoa học dữ liệu
- sâu sắc hơn
- phân phối
- chứng minh
- chứng minh
- phụ thuộc
- triển khai
- triển khai
- triển khai
- triển khai
- thiết kế
- chi tiết
- chi tiết
- Xác định
- Phát triển
- khác nhau
- khó khăn
- trực tiếp
- Bệnh
- phân phối
- phu bến tàu
- Không
- xuống
- tải về
- Tải xuống
- lái xe
- suốt trong
- dễ dàng
- cho phép
- Điểm cuối
- ky sư
- Kỹ sư
- Tiếng Anh
- đánh giá
- ví dụ
- hiện tại
- kinh nghiệm
- Chất chiết xuất
- Đối mặt
- Đặc tính
- Tính năng
- Cuối cùng
- Tên
- Tập trung
- tập trung
- tiếp theo
- hình thức
- định dạng
- Forward
- tìm thấy
- Miễn phí
- chức năng
- xa hơn
- tương lai
- tạo ra
- tạo ra
- thế hệ
- GitHub
- đi
- tốt
- giúp đỡ
- giúp
- chất lượng cao
- Đánh dấu
- Nhấn mạnh
- cao
- lưu trữ
- Độ đáng tin của
- Hướng dẫn
- HTTPS
- lớn
- Nhân loại
- Con người
- Hàng trăm
- xác định
- xác định
- Bản sắc
- hình ảnh
- thực hiện
- thực hiện
- không thể
- nâng cao
- Inc.
- bao gồm
- bao gồm
- Bao gồm
- lên
- ngành công nghiệp
- thông tin
- Cơ sở hạ tầng
- đầu vào
- hội nhập
- Thông minh
- quan tâm
- Giao thức
- Quốc Tế
- trực quan
- IT
- chính nó
- JavaScript
- Việc làm
- việc làm
- Key
- kiến thức
- nổi tiếng
- phòng thí nghiệm
- ghi nhãn
- Nhãn
- Ngôn ngữ
- lớn
- lớn hơn
- phóng
- học
- học tập
- Rời bỏ
- đòn bẩy
- Cấp phép
- Có khả năng
- Dòng
- Chất lỏng
- Danh sách
- tải
- tải
- địa phương
- tại địa phương
- địa điểm thư viện nào
- máy
- học máy
- LÀM CHO
- Làm
- quản lý
- giám đốc
- bản đồ
- lập bản đồ
- Maps
- Marketing
- mặt nạ
- phù hợp
- có nghĩa là
- có nghĩa
- Bộ nhớ
- hỗn hợp
- ML
- kiểu mẫu
- mô hình
- Màn Hình
- chi tiết
- hầu hết
- nhiều
- Tự nhiên
- máy tính xách tay
- con số
- thu được
- cung cấp
- Cung cấp
- Trực tuyến
- mở
- mở
- hoạt động
- hoạt động
- hoạt động
- Tối ưu hóa
- tối ưu hóa
- Tùy chọn
- Các lựa chọn
- gọi món
- cơ quan
- Nền tảng khác
- nếu không thì
- riêng
- một phần
- riêng
- đặc biệt
- Trả
- biểu diễn
- cá nhân
- Nền tảng
- Điểm
- điểm
- Portal
- vị trí
- tích cực
- mạnh mẽ
- dự đoán
- Dự đoán
- giá
- riêng
- Vấn đề
- vấn đề
- quá trình
- Quy trình
- xử lý
- Sản phẩm
- Sản lượng
- Sản phẩm
- profiling
- cho
- cung cấp
- cung cấp
- công khai
- Q & A
- chất lượng
- câu hỏi
- Mau
- Nguyên
- Reading
- hợp lý
- nhận
- giảm
- kho
- đại diện
- Thông tin
- REST của
- Kết quả
- trở lại
- doanh thu
- xem xét
- robotics
- tròn
- chạy
- chạy
- khả năng mở rộng
- Nhà khoa học
- các nhà khoa học
- sdk
- Tìm kiếm
- an ninh
- phân khúc
- phân khúc
- phân đoạn
- chọn
- DỊCH VỤ
- phục vụ
- định
- thiết lập
- ngắn
- thể hiện
- tương tự
- Đơn giản
- Kích thước máy
- kỹ năng
- nhỏ
- So
- Phần mềm
- phát triển phần mềm
- rắn
- giải pháp
- Giải pháp
- một số
- Không gian
- đặc biệt
- chuyên nghành
- đặc biệt
- ngăn xếp
- Tiêu chuẩn
- Bắt đầu
- Tuyên bố
- báo cáo
- là gắn
- hàng
- Chiến lược
- cấu trúc
- Sinh viên
- thành công
- cung cấp
- hỗ trợ
- Hỗ trợ
- hệ thống
- hệ thống
- nhiệm vụ
- thử nghiệm
- Thông qua
- thời gian
- mất thời gian
- Yêu sách
- mã thông báo
- Mã thông báo
- được mã hóa
- Tokens
- Chủ đề
- ngọn đuốc
- Theo dõi
- Hội thảo
- Chuyển đổi
- loại
- ui
- hiểu
- sự hiểu biết
- us
- sử dụng
- sử dụng
- xác nhận
- giá trị
- nhiều
- nhà cung cấp
- Xác minh
- Versus
- ngành dọc
- Video
- Xem
- virus
- tầm nhìn
- Giọng nói
- chờ đợi
- web
- các dịch vụ web
- Điều gì
- trong khi
- CHÚNG TÔI LÀ
- Wikipedia
- ở trong
- không có
- Công việc
- công nhân
- Lực lượng lao động
- công trinh
- giun
- năm