Chuyển giao việc học cho các mô hình phân loại văn bản TensorFlow trong Amazon SageMaker

Amazon SageMaker cung cấp một bộ thuật toán tích hợp, người mẫu được đào tạo trướccác mẫu giải pháp được xây dựng trước để giúp các nhà khoa học dữ liệu và học viên học máy (ML) bắt đầu đào tạo và triển khai các mô hình ML một cách nhanh chóng. Bạn có thể sử dụng các thuật toán và mô hình này cho cả việc học có giám sát và không giám sát. Họ có thể xử lý nhiều loại dữ liệu đầu vào khác nhau, bao gồm dạng bảng, hình ảnh và văn bản.

Bài đăng này là bài thứ ba trong loạt bài về các thuật toán tích hợp mới trong SageMaker. bên trong bài viết đầu tiên, chúng tôi đã chỉ ra cách SageMaker cung cấp một thuật toán tích hợp để phân loại hình ảnh. bên trong bài đăng thứ hai, chúng tôi đã chỉ ra cách SageMaker cung cấp một thuật toán tích hợp để phát hiện đối tượng. Hôm nay, chúng tôi thông báo rằng SageMaker cung cấp một thuật toán tích hợp mới để phân loại văn bản bằng cách sử dụng TensorFlow. Thuật toán học tập có giám sát này hỗ trợ học tập chuyển giao cho nhiều mô hình được đào tạo trước có sẵn trong Trung tâm TensorFlow. Nó lấy một đoạn văn bản làm đầu vào và đầu ra xác suất cho mỗi nhãn lớp. Bạn có thể tinh chỉnh các mô hình được đào tạo trước này bằng cách sử dụng tính năng học chuyển giao ngay cả khi không có sẵn một kho văn bản lớn. Nó có sẵn thông qua SageMaker thuật toán tích hợp, cũng như thông qua Giao diện người dùng SageMaker JumpStart in Xưởng sản xuất Amazon SageMaker. Để biết thêm thông tin, hãy tham khảo Phân loại văn bản và sổ ghi chép ví dụ Giới thiệu về JumpStart - Phân loại văn bản.

Phân loại văn bản với TensorFlow trong SageMaker cung cấp khả năng học chuyển giao trên nhiều mô hình được đào tạo trước có sẵn trong TensorFlow Hub. Theo số lượng nhãn lớp trong dữ liệu đào tạo, một lớp phân loại được gắn vào mô hình trung tâm TensorFlow được đào tạo trước. Lớp phân loại bao gồm một lớp bỏ lớp và một lớp dày đặc, lớp kết nối đầy đủ, với bộ điều chỉnh 2 định mức, được khởi tạo với các trọng số ngẫu nhiên. Việc đào tạo mô hình có các siêu tham số cho tỷ lệ bỏ học của lớp bỏ học và hệ số điều hòa L2 cho lớp dày đặc. Sau đó, toàn bộ mạng, bao gồm cả mô hình được đào tạo trước hoặc chỉ lớp phân loại trên cùng có thể được tinh chỉnh trên dữ liệu đào tạo mới. Trong chế độ học tập chuyển giao này, có thể đạt được đào tạo ngay cả với tập dữ liệu nhỏ hơn.

Cách sử dụng thuật toán phân loại văn bản TensorFlow mới

Phần này mô tả cách sử dụng thuật toán phân loại văn bản TensorFlow với SDK Python của SageMaker. Để biết thông tin về cách sử dụng nó từ Studio UI, hãy xem Khởi động SageMaker.

Thuật toán hỗ trợ học chuyển giao cho các mô hình được đào tạo trước được liệt kê trong Mô hình dòng chảy. Mỗi mô hình được xác định bởi một model_id. Đoạn mã sau đây cho thấy cách tinh chỉnh mô hình cơ sở BERT được xác định bởi model_id tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2 trên một tập dữ liệu đào tạo tùy chỉnh. Cho mỗi model_id, để khởi động công việc đào tạo SageMaker thông qua Người định giá lớp của SageMaker Python SDK, bạn phải tìm nạp URI hình ảnh Docker, URI tập lệnh đào tạo và URI mô hình được đào tạo trước thông qua các chức năng tiện ích được cung cấp trong SageMaker. URI tập lệnh huấn luyện chứa tất cả các mã cần thiết để xử lý dữ liệu, tải mô hình được đào tạo trước, đào tạo mô hình và lưu mô hình được đào tạo để suy luận. URI của mô hình được đào tạo trước chứa định nghĩa kiến ​​trúc mô hình được đào tạo trước và các tham số của mô hình. URI của mô hình được đào tạo trước là dành riêng cho mô hình cụ thể. Các tarball mô hình được đào tạo trước đã được tải xuống trước từ TensorFlow và được lưu với chữ ký mô hình thích hợp trong Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) nhóm, để công việc đào tạo chạy trong sự cô lập của mạng. Xem đoạn mã sau:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-tc-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

Với các tạo tác đào tạo theo mô hình cụ thể này, bạn có thể tạo một đối tượng của Người định giá lớp học:

# Create SageMaker Estimator instance
tf_tc_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,)

Tiếp theo, để học chuyển giao trên tập dữ liệu tùy chỉnh của bạn, bạn có thể cần phải thay đổi các giá trị mặc định của siêu tham số đào tạo, được liệt kê trong Siêu tham số. Bạn có thể tìm nạp một từ điển Python của các siêu tham số này với các giá trị mặc định của chúng bằng cách gọi hyperparameters.retrieve_default, cập nhật chúng khi cần, và sau đó chuyển chúng đến lớp Công cụ ước tính. Lưu ý rằng các giá trị mặc định của một số siêu tham số là khác nhau đối với các kiểu máy khác nhau. Đối với các mô hình lớn, kích thước lô mặc định nhỏ hơn và train_only_top_layer hyperparameter được đặt thành True. Siêu tham số Train_only_top_layer xác định các thông số mô hình thay đổi trong quá trình tinh chỉnh. Nếu train_only_top_layer is True, khi đó các tham số của các lớp phân loại thay đổi và phần còn lại của các tham số không đổi trong quá trình tinh chỉnh. Mặt khác, nếu train_only_top_layer is False, sau đó tất cả các thông số của mô hình được tinh chỉnh. Xem đoạn mã sau:

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

Chúng tôi cung cấp SST2 như một tập dữ liệu mặc định để tinh chỉnh các mô hình. Tập dữ liệu chứa các đánh giá phim tích cực và tiêu cực. Nó đã được tải xuống từ TensorFlow Dưới Giấy phép Apache 2.0. Đoạn mã sau cung cấp tập dữ liệu đào tạo mặc định được lưu trữ trong nhóm S3.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/SST2/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

Cuối cùng, để khởi chạy công việc đào tạo SageMaker để tinh chỉnh mô hình, hãy gọi .fit trên đối tượng của lớp Ước tính, trong khi chuyển vị trí Amazon S3 của tập dữ liệu đào tạo:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Để biết thêm thông tin về cách sử dụng thuật toán phân loại văn bản SageMaker TensorFlow mới để học truyền trên tập dữ liệu tùy chỉnh, triển khai mô hình tinh chỉnh, chạy suy luận trên mô hình đã triển khai và triển khai mô hình được đào tạo trước như ban đầu mà không cần tinh chỉnh trên tập dữ liệu tùy chỉnh, hãy xem sổ ghi chép ví dụ sau: Giới thiệu về JumpStart - Phân loại văn bản.

Giao diện đầu vào / đầu ra cho thuật toán phân loại văn bản TensorFlow

Bạn có thể tinh chỉnh từng mô hình được đào tạo trước được liệt kê trong Mô hình TensorFlow đến bất kỳ tập dữ liệu nhất định nào được tạo thành từ các câu văn bản với bất kỳ số lớp nào. Mô hình được đào tạo trước gắn một lớp phân loại vào mô hình Nhúng văn bản và khởi tạo các tham số của lớp thành các giá trị ngẫu nhiên. Kích thước đầu ra của lớp phân loại được xác định dựa trên số lượng lớp được phát hiện trong dữ liệu đầu vào. Mục tiêu là để giảm thiểu lỗi phân loại trên dữ liệu đầu vào. Mô hình được trả về bằng cách tinh chỉnh có thể được triển khai thêm để suy luận.

Các hướng dẫn sau đây mô tả cách dữ liệu đào tạo nên được định dạng để nhập vào mô hình:

  • Đầu vào - Thư mục chứa tệp data.csv. Mỗi hàng của cột đầu tiên phải có nhãn lớp số nguyên từ 0 đến số lớp. Mỗi hàng của cột thứ hai phải có dữ liệu văn bản tương ứng.
  • Đầu ra - Một mô hình tinh chỉnh có thể được triển khai để suy luận hoặc đào tạo thêm bằng cách sử dụng đào tạo gia tăng. Một tệp ánh xạ các chỉ mục lớp tới nhãn lớp được lưu cùng với các mô hình.

Sau đây là ví dụ về tệp CSV đầu vào. Lưu ý rằng tệp không được có bất kỳ tiêu đề nào. Tệp phải được lưu trữ trong nhóm S3 với đường dẫn tương tự như sau: s3://bucket_name/input_directory/. Lưu ý rằng dấu / bắt buộc.

|0 |hide new secretions from the parental units|
|0 |contains no wit , only labored gags|
|1 |that loves its characters and communicates something rather beautiful about human nature|
|...|...|

Suy luận với thuật toán phân loại văn bản TensorFlow

Các mô hình đã tạo có thể được lưu trữ để suy luận và hỗ trợ văn bản dưới dạng application/x-text loại nội dung. Đầu ra chứa các giá trị xác suất, nhãn lớp cho tất cả các lớp và nhãn dự đoán tương ứng với chỉ mục lớp có xác suất cao nhất được mã hóa ở định dạng JSON. Mô hình xử lý một chuỗi đơn cho mỗi yêu cầu và chỉ xuất một dòng. Sau đây là ví dụ về phản hồi định dạng JSON:

accept: application/json;verbose
{"probabilities": [prob_0, prob_1, prob_2, ...],
 "labels": [label_0, label_1, label_2, ...],
 "predicted_label": predicted_label}

If accept được thiết lập để application/json, thì mô hình chỉ xuất ra các xác suất. Để biết thêm chi tiết về đào tạo và suy luận, hãy xem sổ tay mẫu Giới thiệu về Giới thiệu về JumpStart - Phân loại văn bản.

Sử dụng các thuật toán tích hợp sẵn của SageMaker thông qua giao diện người dùng JumpStart

Bạn cũng có thể sử dụng phân loại văn bản SageMaker TensorFlow và bất kỳ thuật toán tích hợp nào khác bằng một vài cú nhấp chuột qua giao diện người dùng JumpStart. JumpStart là một tính năng của SageMaker cho phép bạn đào tạo và triển khai các thuật toán tích hợp sẵn và các mô hình được đào tạo trước từ các khuôn khổ ML và trung tâm mô hình khác nhau thông qua giao diện đồ họa. Hơn nữa, nó cho phép bạn triển khai các giải pháp ML chính thức kết hợp các mô hình ML và các dịch vụ AWS khác nhau để giải quyết một trường hợp sử dụng được nhắm mục tiêu.

Sau đây là hai video cho thấy cách bạn có thể tái tạo cùng một quy trình tinh chỉnh và triển khai mà chúng tôi vừa trải qua với một vài cú nhấp chuột qua giao diện người dùng JumpStart.

Tinh chỉnh mô hình được đào tạo trước

Đây là quy trình để tinh chỉnh cùng một mô hình phân loại văn bản được đào tạo trước.

Triển khai mô hình được tinh chỉnh

Sau khi quá trình đào tạo mô hình kết thúc, bạn có thể triển khai trực tiếp mô hình tới một điểm cuối liên tục, theo thời gian thực chỉ bằng một cú nhấp chuột.

Kết luận

Trong bài đăng này, chúng tôi đã thông báo về việc ra mắt thuật toán phân loại văn bản SageMaker TensorFlow tích hợp sẵn. Chúng tôi đã cung cấp mã ví dụ về cách thực hiện việc học truyền trên tập dữ liệu tùy chỉnh bằng cách sử dụng mô hình được đào tạo trước từ trung tâm TensorFlow bằng cách sử dụng thuật toán này.

Để biết thêm thông tin, hãy kiểm tra tài liệu hướng dẫn và sổ ghi chép ví dụ Giới thiệu về JumpStart - Phân loại văn bản.


Giới thiệu về tác giả

Chuyển giao kiến ​​thức cho các mô hình phân loại văn bản TensorFlow trong Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Tiến sĩ Vivek Madan là một nhà khoa học ứng dụng với Nhóm Khởi động Amazon SageMaker. Ông lấy bằng Tiến sĩ tại Đại học Illinois tại Urbana-Champaign và là Nhà nghiên cứu Sau Tiến sĩ tại Georgia Tech. Anh ấy là một nhà nghiên cứu tích cực về học máy và thiết kế thuật toán và đã xuất bản các bài báo trong các hội nghị EMNLP, ICLR, COLT, FOCS và SODA.

Chuyển giao kiến ​​thức cho các mô hình phân loại văn bản TensorFlow trong Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.João Moura là một Kiến trúc sư Giải pháp Chuyên gia về AI / ML tại Amazon Web Services. Ông chủ yếu tập trung vào các trường hợp sử dụng NLP và giúp khách hàng tối ưu hóa việc đào tạo và triển khai mô hình học sâu. Ông cũng là người tích cực đề xuất các giải pháp ML mã thấp và phần cứng chuyên dụng ML.

Chuyển giao kiến ​​thức cho các mô hình phân loại văn bản TensorFlow trong Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Tiến sĩ Ashish Khetan là một nhà khoa học ứng dụng cao cấp với Các thuật toán tích hợp sẵn của Amazon SageMaker và giúp phát triển các thuật toán học máy. Ông lấy bằng Tiến sĩ tại Đại học Illinois Urbana Champaign. Ông là một nhà nghiên cứu tích cực về học máy và suy luận thống kê và đã xuất bản nhiều bài báo trong các hội nghị NeurIPS, ICML, ICLR, JMLR, ACL và EMNLP.

Dấu thời gian:

Thêm từ Học máy AWS