Mengidentifikasi teks parafrase memiliki nilai bisnis dalam banyak kasus penggunaan. Misalnya, dengan mengidentifikasi parafrase kalimat, sistem peringkasan teks dapat menghapus informasi yang berlebihan. Aplikasi lain adalah untuk mengidentifikasi dokumen yang dijiplak. Dalam posting ini, kami menyempurnakan Wajah Memeluk transformator aktif Amazon SageMaker untuk mengidentifikasi pasangan kalimat yang diparafrasekan dalam beberapa langkah.
Model yang benar-benar kuat dapat mengidentifikasi teks parafrase ketika bahasa yang digunakan mungkin sangat berbeda, dan juga mengidentifikasi perbedaan ketika bahasa yang digunakan memiliki tumpang tindih leksikal yang tinggi. Dalam posting ini, kami fokus pada aspek terakhir. Secara khusus, kami melihat apakah kami dapat melatih model yang dapat mengidentifikasi perbedaan antara dua kalimat yang memiliki tumpang tindih leksikal tinggi dan makna yang sangat berbeda atau berlawanan. Misalnya, kalimat berikut memiliki kata yang sama persis tetapi maknanya berlawanan:
- Saya mengambil penerbangan dari New York ke Paris
- Saya mengambil penerbangan dari Paris ke New York
Ikhtisar solusi
Kami memandu Anda melalui langkah-langkah tingkat tinggi berikut:
- Mengatur lingkungan.
- Siapkan datanya.
- Token dataset.
- Sempurnakan modelnya.
- Deploy model dan lakukan inferensi.
- Mengevaluasi kinerja model.
Jika Anda ingin melewati pengaturan lingkungan, Anda dapat menggunakan buku catatan berikut di GitHub dan jalankan kode di SageMaker.
Hugging Face dan AWS mengumumkan kemitraan di awal tahun 2022 yang semakin memudahkan untuk melatih model Hugging Face di SageMaker. Fungsionalitas ini tersedia melalui pengembangan Hugging Face Wadah Pembelajaran Mendalam (DLC) AWS. Wadah ini termasuk Hugging Face Transformers, Tokenizers, dan library Datasets, yang memungkinkan kami menggunakan sumber daya ini untuk pelatihan dan pekerjaan inferensi. Untuk daftar gambar DLC yang tersedia, lihat Tersedia Gambar Deep Learning Containers. Mereka dipelihara dan diperbarui secara teratur dengan patch keamanan. Anda dapat menemukan banyak contoh cara melatih model Wajah Memeluk dengan DLC ini dan Memeluk Wajah Python SDK berikut ini GitHub repo.
Kumpulan data PAWS
Menyadari kurangnya kumpulan data pasangan kalimat yang menunjukkan tumpang tindih leksikal tinggi tanpa parafrase, aslinya PAWS kumpulan data yang dirilis pada tahun 2019 bertujuan untuk memberikan komunitas pemrosesan bahasa alami (NLP) sumber daya baru untuk melatih dan mengevaluasi model deteksi parafrase. Pasangan kalimat PAWS dihasilkan dalam dua langkah menggunakan Wikipedia dan Pasangan Pertanyaan Quora (QQP) kumpulan data. Model bahasa pertama-tama menukar kata dalam pasangan kalimat dengan Bag of Words (BOW) yang sama untuk menghasilkan pasangan kalimat. Langkah terjemahan kembali kemudian menghasilkan parafrase dengan tumpang tindih BOW tinggi tetapi menggunakan urutan kata yang berbeda. Dataset PAWS terakhir berisi total 108,000 pasangan berlabel manusia dan 656,000 pasangan berlabel berisik.
Dalam posting ini, kami menggunakan Berlabel PAWS-Wiki (Akhir) kumpulan data dari Memeluk Wajah. Hugging Face telah melakukan pemisahan data untuk kami, yang menghasilkan 49,000 pasangan kalimat dalam dataset pelatihan, dan masing-masing 8,000 pasangan kalimat untuk dataset validasi dan pengujian. Dua contoh pasangan kalimat dari dataset pelatihan ditunjukkan pada contoh berikut. Label 1 menunjukkan bahwa dua kalimat adalah parafrase satu sama lain.
Kalimat 1 | Kalimat 2 | label |
Meski bisa dipertukarkan, potongan bodi pada kedua mobil tersebut tidak serupa. | Meski mirip, bagian bodi tidak bisa dipertukarkan pada 2 mobil tersebut. | 0 |
Katz lahir di Swedia pada tahun 1947 dan pindah ke New York City pada usia 1 tahun. | Katz lahir pada tahun 1947 di Swedia dan pindah ke New York pada usia satu tahun. | 1 |
Prasyarat
Anda harus melengkapi prasyarat berikut:
- Daftar akun AWS jika Anda belum memilikinya. Untuk informasi lebih lanjut, lihat Siapkan Prasyarat Amazon SageMaker.
- Mulai menggunakan Instance notebook SageMaker.
- Setel yang benar Identitas AWS dan Manajemen Akses (IAM). Untuk informasi lebih lanjut, lihat Peran SageMaker.
Mengatur lingkungan
Sebelum kita mulai memeriksa dan menyiapkan data kita untuk model fine-tuning, kita perlu menyiapkan lingkungan kita. Mari kita mulai dengan menjalankan instance notebook SageMaker. Pilih Wilayah AWS di akun AWS Anda dan ikuti instruksi untuk buat instance notebook SageMaker. Instance notebook mungkin memerlukan beberapa menit untuk berputar.
Saat instance notebook sedang berjalan, pilih conda_pytorch_p38
sebagai jenis kernel Anda. Untuk menggunakan dataset Hugging Face, pertama-tama kita perlu menginstal dan mengimpor library Hugging Face:
Selanjutnya, mari kita buat sesi SageMaker. Kami menggunakan default Layanan Penyimpanan Sederhana Amazon Bucket (Amazon S3) yang terkait dengan sesi SageMaker untuk menyimpan set data PAWS dan artefak model:
Siapkan datanya
Kami dapat memuat dataset PAWS versi Hugging Face dengan load_dataset()
memerintah. Panggilan ini mengunduh dan mengimpor skrip pemrosesan Python PAWS dari repositori Hugging Face GitHub, yang kemudian mengunduh kumpulan data PAWS dari URL asli yang disimpan dalam skrip dan menyimpan data sebagai tabel Panah di drive. Lihat kode berikut:
Sebelum kita mulai menyempurnakan model BERT yang telah dilatih sebelumnya, mari kita lihat distribusi kelas target kita. Untuk kasus penggunaan kami, dataset PAWS memiliki label biner (0 menunjukkan pasangan kalimat bukan parafrase, dan 1 menunjukkan itu). Mari buat bagan kolom untuk melihat distribusi kelas, seperti yang ditunjukkan pada kode berikut. Kami melihat bahwa ada sedikit masalah ketidakseimbangan kelas dalam set pelatihan kami (56% sampel negatif vs 44% sampel positif). Namun, ketidakseimbangannya cukup kecil untuk menghindari penggunaan teknik mitigasi ketidakseimbangan kelas.
Token dataset
Sebelum kita bisa mulai fine-tuning, kita perlu tokenize dataset kita. Sebagai titik awal, katakanlah kita ingin menyempurnakan dan mengevaluasi roberta-base
transformator. Kami memilih roberta-base
karena ini adalah transformator serba guna yang telah dilatih sebelumnya pada kumpulan besar data bahasa Inggris dan telah sering menunjukkan kinerja tinggi pada berbagai tugas NLP. Model ini awalnya diperkenalkan di koran RoBERTa: Pendekatan Pra-pelatihan BERT yang Dioptimalkan dengan Kuat.
Kami melakukan tokenisasi pada kalimat dengan a roberta-base
tokenizer dari Hugging Face, yang menggunakan Pengkodean Pasangan Byte tingkat byte untuk membagi dokumen menjadi token. Untuk detail lebih lanjut tentang tokenizer RoBERTa, lihat Roberta Tokenizer. Karena input kita adalah pasangan kalimat, kita perlu tokenize kedua kalimat secara bersamaan. Karena sebagian besar model BERT memerlukan input untuk memiliki panjang input token yang tetap, kami menetapkan parameter berikut: max_len=128
dan truncation=True
. Lihat kode berikut:
Langkah prapemrosesan terakhir untuk menyempurnakan model BERT kami adalah mengonversi rangkaian tokenized train dan validasi menjadi tensor PyTorch dan mengunggahnya ke bucket S3 kami:
Sempurnakan modelnya
Sekarang setelah kami selesai dengan persiapan data, kami siap untuk menyempurnakan pra-pelatihan kami roberta-base
model pada tugas identifikasi parafrase. Kita dapat menggunakan kelas SageMaker Hugging Face Estimator untuk memulai proses fine-tuning dalam dua langkah. Langkah pertama adalah menentukan hyperparameter pelatihan dan definisi metrik. Variabel definisi metrik memberi tahu Hugging Face Estimator jenis metrik apa yang akan diambil dari log pelatihan model. Di sini, kami terutama tertarik untuk mengekstrak metrik set validasi di setiap periode pelatihan.
Langkah kedua adalah membuat Instansi Pengukur Wajah Pelukan dan memulai proses penyetelan dengan .fit()
Metode:
Proses fine-tuning memakan waktu sekitar 30 menit menggunakan hyperparameter yang ditentukan.
Menyebarkan model dan melakukan inferensi
SageMaker menawarkan beberapa opsi penerapan tergantung pada kasus penggunaan Anda. Untuk titik akhir real-time persisten yang membuat satu prediksi pada satu waktu, kami sarankan untuk menggunakan Layanan hosting waktu nyata SageMaker. Jika Anda memiliki beban kerja yang memiliki periode menganggur di antara lonjakan lalu lintas dan dapat mentolerir start dingin, sebaiknya gunakan Inferensi Tanpa Server. Titik akhir tanpa server secara otomatis meluncurkan sumber daya komputasi dan menskalakannya masuk dan keluar bergantung pada lalu lintas, menghilangkan kebutuhan untuk memilih jenis instans atau mengelola kebijakan penskalaan. Kami mendemonstrasikan cara menerapkan model Hugging Face kami yang telah disesuaikan ke titik akhir inferensi waktu nyata dan titik akhir Inferensi Tanpa Server.
Terapkan ke titik akhir inferensi waktu nyata
Anda dapat menerapkan objek pelatihan ke hosting inferensi waktu nyata dalam SageMaker menggunakan .deploy()
metode. Untuk daftar lengkap parameter yang diterima, lihat Memeluk Wajah Model. Untuk memulai, mari kita terapkan model ke satu instance, dengan meneruskan parameter berikut: initial_instance_count
, instance_type
, dan endpoint_name
. Lihat kode berikut:
Model membutuhkan waktu beberapa menit untuk diterapkan. Setelah model di-deploy, kami dapat mengirimkan catatan sampel dari kumpulan data uji yang tidak terlihat ke titik akhir untuk inferensi.
Terapkan ke titik akhir Inferensi Tanpa Server
Untuk menyebarkan objek pelatihan kita ke titik akhir tanpa server, kita harus terlebih dahulu menentukan file konfigurasi tanpa server dengan memory_size_in_mb
dan max_concurrency
argumen:
memory_size_in_mb
mendefinisikan ukuran RAM total titik akhir tanpa server Anda; ukuran RAM minimal adalah 1024 MB (1 GB) dan dapat ditingkatkan hingga 6144 MB (6 GB). Umumnya, Anda harus memilih ukuran memori yang setidaknya sebesar ukuran model Anda. max_concurrency
mendefinisikan kuota untuk berapa banyak pemanggilan serentak yang dapat diproses pada waktu yang sama (hingga 50 pemanggilan serentak) untuk satu titik akhir.
Kami juga perlu menyediakan URI gambar inferensi Wajah Hugging, yang dapat Anda ambil menggunakan kode berikut:
Sekarang setelah kita memiliki file konfigurasi tanpa server, kita dapat membuat titik akhir tanpa server dengan cara yang sama seperti titik akhir inferensi waktu nyata, menggunakan .deploy()
Metode:
Titik akhir harus dibuat dalam beberapa menit.
Lakukan inferensi model
Untuk membuat prediksi, kita perlu membuat pasangan kalimat dengan menambahkan [CLS]
dan [SEP]
token khusus dan kemudian mengirimkan input ke titik akhir model. Sintaks untuk inferensi real-time dan inferensi tanpa server adalah sama:
Pada contoh berikut, kita dapat melihat model mampu mengklasifikasikan dengan benar apakah pasangan kalimat masukan berisi kalimat parafrase.
Berikut ini adalah contoh inferensi real-time.
Berikut ini adalah contoh Inferensi Tanpa Server.
Evaluasi kinerja model
Untuk mengevaluasi model, mari kita perluas kode sebelumnya dan mengirimkan semua 8,000 catatan pengujian yang tidak terlihat ke titik akhir waktu nyata:
Selanjutnya, kita dapat membuat laporan klasifikasi menggunakan prediksi yang diekstraksi:
Kami mendapatkan nilai tes berikut.
Kita dapat mengamati bahwa roberta-base
memiliki gabungan skor F1 rata-rata makro sebesar 92% dan performanya sedikit lebih baik dalam mendeteksi kalimat yang merupakan parafrase. Itu roberta-base
model berkinerja baik, tetapi merupakan praktik yang baik untuk menghitung kinerja model menggunakan setidaknya satu model lain.
Tabel berikut membandingkan roberta-base
hasil kinerja pada set tes yang sama terhadap trafo fine-tuned lain yang disebut paraphrase-mpnet-base-v2
, transformator kalimat yang telah dilatih sebelumnya secara khusus untuk tugas identifikasi parafrase. Kedua model dilatih pada instance ml.p3.8xlarge.
Hasilnya menunjukkan bahwa roberta-base
memiliki skor F1 1% lebih tinggi dengan pelatihan dan waktu inferensi yang sangat mirip menggunakan hosting inferensi waktu nyata di SageMaker. Perbedaan kinerja antara model relatif kecil, namun, roberta-base
pada akhirnya adalah pemenangnya karena memiliki metrik kinerja yang sedikit lebih baik dan waktu pelatihan dan inferensi yang hampir sama.
Ketelitian | Mengingat kembali | Skor F1 | Waktu pelatihan (dapat ditagih) | Waktu inferensi (set tes penuh) | |
robert-base | 0.92 | 0.93 | 0.92 | 18 menit | 2 menit |
parafrase-mpnet- dasar-v2 |
0.92 | 0.91 | 0.91 | 17 menit | 2 menit |
Membersihkan
Setelah selesai menggunakan titik akhir model, Anda dapat menghapusnya untuk menghindari timbulnya biaya di masa mendatang:
Kesimpulan
Dalam posting ini, kami membahas cara membuat model identifikasi parafrase dengan cepat menggunakan transformer Hugging Face di SageMaker. Kami menyempurnakan dua trafo pra-terlatih, roberta-base
dan paraphrase-mpnet-base-v2
, menggunakan set data PAWS (yang berisi pasangan kalimat dengan tumpang tindih leksikal tinggi). Kami mendemonstrasikan dan mendiskusikan manfaat inferensi real-time vs. penerapan Inferensi Tanpa Server, yang terakhir adalah fitur baru yang menargetkan beban kerja runcing dan menghilangkan kebutuhan untuk mengelola kebijakan penskalaan. Pada set tes yang tidak terlihat dengan 8,000 catatan, kami menunjukkan bahwa kedua model mencapai skor F1 lebih besar dari 90%.
Untuk memperluas solusi ini, pertimbangkan hal berikut:
- Coba sesuaikan dengan dataset kustom Anda sendiri. Jika Anda tidak memiliki label pelatihan yang memadai, Anda dapat mengevaluasi kinerja model yang disesuaikan seperti yang ditunjukkan dalam posting ini pada kumpulan data pengujian khusus.
- Integrasikan model yang disempurnakan ini ke dalam aplikasi hilir yang memerlukan informasi apakah dua kalimat (atau blok teks) merupakan parafrase satu sama lain.
Selamat membangun!
Tentang Penulis
Bala Krishnamoorthy adalah seorang Data Scientist dengan AWS Professional Services, di mana ia senang menerapkan pembelajaran mesin untuk memecahkan masalah bisnis pelanggan. Dia berspesialisasi dalam kasus penggunaan pemrosesan bahasa alami dan telah bekerja dengan pelanggan di industri seperti perangkat lunak, keuangan, dan perawatan kesehatan. Di waktu luangnya, ia senang mencoba makanan baru, menonton komedi dan dokumenter, berolahraga di Orange Theory, dan bermain air (paddle-boarding, snorkeling, dan semoga segera menyelam).
Ivan Cui adalah Ilmuwan Data dengan Layanan Profesional AWS, di mana dia membantu pelanggan membangun dan menerapkan solusi menggunakan pembelajaran mesin di AWS. Dia telah bekerja dengan pelanggan di berbagai industri, termasuk perangkat lunak, keuangan, farmasi, dan perawatan kesehatan. Di waktu luangnya, ia senang membaca, menghabiskan waktu bersama keluarga, dan memaksimalkan portofolio sahamnya.
- '
- "
- 000
- 10
- 100
- 2019
- 2022
- 84
- Tentang Kami
- mengakses
- Akun
- dicapai
- di seluruh
- Semua
- sudah
- Amazon
- mengumumkan
- Lain
- Aplikasi
- Menerapkan
- sekitar
- argumen
- tersedia
- AWS
- makhluk
- Manfaat
- tubuh
- batas
- membangun
- bisnis
- panggilan
- mampu
- mobil
- kasus
- beban
- Pilih
- Kota
- kelas
- klasifikasi
- kode
- Kolom
- bergabung
- masyarakat
- sama sekali
- menghitung
- kepercayaan
- Wadah
- mengandung
- bisa
- membuat
- dibuat
- adat
- pelanggan
- pelanggan
- data
- ilmuwan data
- mendemonstrasikan
- menunjukkan
- Tergantung
- menyebarkan
- dikerahkan
- penyebaran
- rincian
- Deteksi
- Pengembangan
- berbeda
- distribusi
- dokumenter
- dokumen
- download
- mendorong
- efisien
- Titik akhir
- Inggris
- Lingkungan Hidup
- menetapkan
- mengevaluasi
- contoh
- menunjukkan
- Lihat lebih lanjut
- Menghadapi
- keluarga
- Fitur
- keuangan
- Pertama
- penerbangan
- Fokus
- mengikuti
- berikut
- makanan
- Gratis
- penuh
- fungsi
- fungsi
- masa depan
- tujuan umum
- umumnya
- menghasilkan
- GitHub
- baik
- lebih besar
- kesehatan
- tinggi
- membantu
- di sini
- High
- lebih tinggi
- tuan
- Seterpercayaapakah Olymp Trade? Kesimpulan
- How To
- HTTPS
- Identifikasi
- mengenali
- mengidentifikasi
- identitas
- gambar
- memasukkan
- Termasuk
- industri
- informasi
- memasukkan
- install
- tertarik
- isu
- IT
- Jobs
- Label
- bahasa
- besar
- jalankan
- pengetahuan
- Perpustakaan
- Daftar
- memuat
- mesin
- Mesin belajar
- MEMBUAT
- mengelola
- Memori
- Metrik
- ML
- model
- model
- lebih
- paling
- beberapa
- Alam
- negatif
- NY
- new york city
- buku catatan
- Penawaran
- dioptimalkan
- Opsi
- urutan
- Lainnya
- sendiri
- kertas
- Paris
- Kemitraan
- Lewat
- Patch
- prestasi
- periode
- farmasi
- Titik
- Kebijakan
- portofolio
- positif
- praktek
- ramalan
- Prediksi
- masalah
- proses
- pengolahan
- profesional
- memberikan
- pertanyaan
- Quora
- RAM
- baris
- Bacaan
- real-time
- sarankan
- arsip
- dirilis
- melaporkan
- gudang
- membutuhkan
- sumber
- Sumber
- Hasil
- kembali
- Run
- berjalan
- Skala
- skala
- ilmuwan
- keamanan
- terpilih
- Tanpa Server
- Layanan
- set
- pengaturan
- mirip
- Sederhana
- Ukuran
- kecil
- Perangkat lunak
- padat
- larutan
- Solusi
- MEMECAHKAN
- khusus
- spesialisasi
- Secara khusus
- Pengeluaran
- Berputar
- membagi
- awal
- mulai
- dimulai
- saham
- penyimpanan
- menyimpan
- Kemudian
- menyediakan
- Swedia
- sistem
- target
- tugas
- teknik
- mengatakan
- uji
- Melalui
- waktu
- Tokenisasi
- dipatok
- Token
- puncak
- obor
- lalu lintas
- Pelatihan
- Terjemahan
- us
- menggunakan
- pengesahan
- nilai
- variasi
- View
- air
- Apa
- apakah
- Wikipedia
- dalam
- tanpa
- kata
- bekerja
- kerja
- berolahraga