Transfer pembelajaran untuk model klasifikasi teks TensorFlow di Amazon SageMaker

Amazon SageMaker menyediakan serangkaian algoritme bawaan, model pra-terlatih, dan templat solusi yang dibuat sebelumnya untuk membantu ilmuwan data dan praktisi machine learning (ML) memulai pelatihan dan menerapkan model ML dengan cepat. Anda dapat menggunakan algoritme dan model ini untuk pembelajaran yang diawasi dan tidak diawasi. Mereka dapat memproses berbagai jenis input data, termasuk tabular, gambar, dan teks.

Posting ini adalah yang ketiga dari seri tentang algoritme bawaan baru di SageMaker. Dalam Pos pertama, kami menunjukkan bagaimana SageMaker menyediakan algoritme bawaan untuk klasifikasi gambar. Dalam pos kedua, kami menunjukkan bagaimana SageMaker menyediakan algoritme bawaan untuk deteksi objek. Hari ini, kami mengumumkan bahwa SageMaker menyediakan algoritme bawaan baru untuk klasifikasi teks menggunakan TensorFlow. Algoritme pembelajaran terawasi ini mendukung pembelajaran transfer untuk banyak model terlatih yang tersedia di hub TensorFlow. Dibutuhkan sepotong teks sebagai input dan menampilkan probabilitas untuk masing-masing label kelas. Anda dapat menyempurnakan model terlatih ini menggunakan pembelajaran transfer bahkan ketika korpus teks yang besar tidak tersedia. Ini tersedia melalui SageMaker algoritme bawaan, maupun melalui UI JumpStart SageMaker in Studio Amazon SageMaker. Untuk informasi lebih lanjut, lihat Klasifikasi Teks dan contoh buku catatan Pengantar JumpStart โ€“ Klasifikasi Teks.

Klasifikasi Teks dengan TensorFlow di SageMaker menyediakan pembelajaran transfer pada banyak model terlatih yang tersedia di TensorFlow Hub. Menurut jumlah label kelas dalam data pelatihan, lapisan klasifikasi dilampirkan ke model hub TensorFlow yang telah dilatih sebelumnya. Lapisan klasifikasi terdiri dari lapisan dropout dan lapisan padat, lapisan terhubung penuh, dengan 2-norm regularizer, yang diinisialisasi dengan bobot acak. Pelatihan model memiliki hyper-parameter untuk tingkat dropout layer dropout, dan faktor regularisasi L2 untuk layer padat. Kemudian, seluruh jaringan, termasuk model pra-pelatihan, atau hanya lapisan klasifikasi teratas yang dapat disesuaikan dengan data pelatihan baru. Dalam mode pembelajaran transfer ini, pelatihan dapat dicapai bahkan dengan kumpulan data yang lebih kecil.

Cara menggunakan algoritme klasifikasi teks TensorFlow baru

Bagian ini menjelaskan cara menggunakan algoritme klasifikasi teks TensorFlow dengan SDK Python SageMaker. Untuk informasi tentang cara menggunakannya dari UI Studio, lihat SageMaker JumpStart.

Algoritme mendukung pembelajaran transfer untuk model pra-terlatih yang tercantum dalam Model aliran tensor. Setiap model diidentifikasi dengan keunikan model_id. Kode berikut menunjukkan cara menyempurnakan model dasar BERT yang diidentifikasi oleh model_id tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2 pada set data pelatihan khusus. Untuk setiap model_id, untuk meluncurkan tugas pelatihan SageMaker melalui Penilai kelas SageMaker Python SDK, Anda harus mengambil URI gambar Docker, URI skrip pelatihan, dan URI model terlatih melalui fungsi utilitas yang disediakan di SageMaker. URI skrip pelatihan berisi semua kode yang diperlukan untuk pemrosesan data, memuat model yang telah dilatih sebelumnya, pelatihan model, dan menyimpan model yang dilatih untuk inferensi. URI model terlatih berisi definisi arsitektur model terlatih dan parameter model. URI model terlatih khusus untuk model tertentu. Tarbal model terlatih telah diunduh sebelumnya dari TensorFlow dan disimpan dengan tanda tangan model yang sesuai di Layanan Penyimpanan Sederhana Amazon (Amazon S3) bucket, sehingga tugas pelatihan berjalan dalam isolasi jaringan. Lihat kode berikut:

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"

Dengan artefak pelatihan khusus model ini, Anda dapat membuat objek dari Penilai kelas:

# 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,)

Selanjutnya, untuk mentransfer pembelajaran pada dataset kustom, Anda mungkin perlu mengubah nilai default dari hyperparameter pelatihan, yang tercantum di Hyperparameter. Anda dapat mengambil kamus Python dari hyperparameter ini dengan nilai defaultnya dengan memanggil hyperparameters.retrieve_default, perbarui sesuai kebutuhan, lalu teruskan ke kelas Estimator. Perhatikan bahwa nilai default dari beberapa hyperparameter berbeda untuk model yang berbeda. Untuk model besar, ukuran batch default lebih kecil dan train_only_top_layer hyperparameter diatur ke True. hiperparameter Train_only_top_layer mendefinisikan parameter model mana yang berubah selama proses fine-tuning. Jika train_only_top_layer is True, maka parameter lapisan klasifikasi berubah dan parameter lainnya tetap konstan selama proses penyempurnaan. Di sisi lain, jika train_only_top_layer is False, maka semua parameter model disetel halus. Lihat kode berikut:

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"

Kami menyediakan SST2 sebagai kumpulan data default untuk menyempurnakan model. Kumpulan data berisi review film positif dan negatif. Ini telah diunduh dari TensorFlow bawah Lisensi Apache 2.0. Kode berikut menyediakan set data pelatihan default yang dihosting di bucket 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}"

Terakhir, untuk meluncurkan tugas pelatihan SageMaker untuk menyempurnakan model, panggil .fit pada objek kelas Estimator, sambil meneruskan lokasi Amazon S3 dari set data pelatihan:

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

Untuk informasi lebih lanjut tentang cara menggunakan algoritme klasifikasi teks SageMaker TensorFlow baru untuk mentransfer pembelajaran pada kumpulan data khusus, menerapkan model yang telah disempurnakan, menjalankan inferensi pada model yang diterapkan, dan menerapkan model yang telah dilatih apa adanya tanpa penyesuaian terlebih dahulu pada kumpulan data khusus, lihat contoh buku catatan berikut: Pengantar JumpStart โ€“ Klasifikasi Teks.

Antarmuka input/output untuk algoritme klasifikasi teks TensorFlow

Anda dapat menyempurnakan setiap model pra-latihan yang tercantum di Model TensorFlow ke set data apa pun yang terdiri dari kalimat teks dengan sejumlah kelas. Model pra-terlatih melampirkan lapisan klasifikasi ke model Penyematan Teks dan menginisialisasi parameter lapisan ke nilai acak. Dimensi output dari layer klasifikasi ditentukan berdasarkan jumlah kelas yang terdeteksi pada data input. Tujuannya adalah untuk meminimalkan kesalahan klasifikasi pada data masukan. Model yang dikembalikan dengan fine-tuning dapat digunakan lebih lanjut untuk inferensi.

Instruksi berikut menjelaskan bagaimana data pelatihan harus diformat untuk input ke model:

  • Input โ€“ Direktori yang berisi file data.csv. Setiap baris dari kolom pertama harus memiliki label kelas bilangan bulat antara 0 dan jumlah kelas. Setiap baris dari kolom kedua harus memiliki data teks yang sesuai.
  • Keluaran โ€“ Model yang disempurnakan yang dapat digunakan untuk inferensi atau dilatih lebih lanjut menggunakan pelatihan tambahan. Indeks kelas pemetaan file ke label kelas disimpan bersama dengan model.

Berikut ini adalah contoh file CSV masukan. Perhatikan bahwa file tidak boleh memiliki tajuk apa pun. File harus dihosting di bucket S3 dengan jalur yang mirip dengan yang berikut: s3://bucket_name/input_directory/. Perhatikan bahwa trailing / Dibutuhkan.

|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|
|...|...|

Inferensi dengan algoritme klasifikasi teks TensorFlow

Model yang dihasilkan dapat dihosting untuk inferensi dan mendukung teks sebagai application/x-text Jenis konten. Keluarannya berisi nilai probabilitas, label kelas untuk semua kelas, dan label prediksi yang sesuai dengan indeks kelas dengan probabilitas tertinggi yang dikodekan dalam format JSON. Model memproses satu string per permintaan dan hanya menghasilkan satu baris. Berikut ini adalah contoh respons format 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 diatur ke application/json, maka model hanya menampilkan probabilitas. Untuk detail selengkapnya tentang pelatihan dan inferensi, lihat contoh buku catatan Pengantar Pengantar JumpStart โ€“ Klasifikasi Teks.

Gunakan algoritme bawaan SageMaker melalui UI JumpStart

Anda juga dapat menggunakan klasifikasi teks SageMaker TensorFlow dan salah satu algoritme bawaan lainnya dengan beberapa klik melalui UI JumpStart. JumpStart adalah fitur SageMaker yang memungkinkan Anda melatih dan menerapkan algoritme bawaan dan model terlatih dari berbagai kerangka kerja ML dan hub model melalui antarmuka grafis. Selain itu, ini memungkinkan Anda menerapkan solusi ML lengkap yang menggabungkan model ML dan berbagai layanan AWS lainnya untuk menyelesaikan kasus penggunaan yang ditargetkan.

Berikut adalah dua video yang menunjukkan bagaimana Anda dapat mereplikasi proses penyempurnaan dan penerapan yang sama yang baru saja kami lalui dengan beberapa klik melalui UI JumpStart.

Sempurnakan model yang telah dilatih sebelumnya

Berikut adalah proses untuk menyempurnakan model klasifikasi teks terlatih yang sama.

Deploy model yang telah disempurnakan

Setelah pelatihan model selesai, Anda dapat langsung men-deploy model ke endpoint real-time yang persisten dengan satu klik.

Kesimpulan

Dalam postingan ini, kami mengumumkan peluncuran algoritme bawaan klasifikasi teks SageMaker TensorFlow. Kami menyediakan kode contoh untuk cara melakukan pembelajaran transfer pada kumpulan data khusus menggunakan model terlatih dari hub TensorFlow menggunakan algoritme ini.

Untuk informasi lebih lanjut, lihat dokumentasi dan contoh buku catatan Pengantar JumpStart โ€“ Klasifikasi Teks.


Tentang penulis

Pembelajaran transfer untuk model klasifikasi teks TensorFlow di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Dr Vivek Madan adalah Ilmuwan Terapan dengan Tim JumpStart Amazon SageMaker. Dia mendapatkan gelar PhD dari University of Illinois di Urbana-Champaign dan merupakan Peneliti Pasca Doktoral di Georgia Tech. Dia adalah peneliti aktif dalam pembelajaran mesin dan desain algoritma dan telah menerbitkan makalah di konferensi EMNLP, ICLR, COLT, FOCS, dan SODA.

Pembelajaran transfer untuk model klasifikasi teks TensorFlow di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Joรฃo Moura adalah Arsitek Solusi Spesialis AI/ML di Amazon Web Services. Dia sebagian besar berfokus pada kasus penggunaan NLP dan membantu pelanggan mengoptimalkan pelatihan dan penerapan model pembelajaran mendalam. Dia juga pendukung aktif solusi ML kode rendah dan perangkat keras khusus ML.

Pembelajaran transfer untuk model klasifikasi teks TensorFlow di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Dr Ashish Khetan adalah Ilmuwan Terapan Senior dengan Algoritme bawaan Amazon SageMaker dan membantu mengembangkan algoritme pembelajaran mesin. Dia mendapatkan gelar PhD dari University of Illinois Urbana Champaign. Dia adalah peneliti aktif dalam pembelajaran mesin dan inferensi statistik dan telah menerbitkan banyak makalah di konferensi NeurIPS, ICML, ICLR, JMLR, ACL, dan EMNLP.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS