Menangani pertanyaan pelanggan, termasuk email, adalah bagian yang diperlukan dalam menjalankan banyak bisnis, tetapi hal ini dapat dengan cepat menjadi merepotkan. Dengan sedikit upaya, model kecerdasan buatan (AI) seperti Gemma dapat membantu mempermudah hal ini.
Setiap bisnis menangani pertanyaan seperti email dengan cara yang sedikit berbeda, jadi penting untuk dapat menyesuaikan teknologi seperti AI generatif dengan kebutuhan bisnis Anda. Project ini menangani masalah spesifik terkait ekstraksi informasi pesanan dari email ke toko roti menjadi data terstruktur, sehingga dapat dengan cepat ditambahkan ke sistem penanganan pesanan. Dengan menggunakan 10 hingga 20 contoh pertanyaan dan output yang Anda inginkan, Anda dapat menyesuaikan model Gemma untuk memproses email dari pelanggan, membantu Anda merespons dengan cepat, dan berintegrasi dengan sistem bisnis yang ada. Project ini dibuat sebagai pola aplikasi AI yang dapat Anda perluas dan sesuaikan untuk mendapatkan nilai dari model Gemma untuk bisnis Anda.
Untuk video ringkasan proyek dan cara memperluasnya, termasuk wawasan dari pembuatnya, lihat Asisten AI Email Bisnis Video Membangun dengan AI Google. Anda juga dapat meninjau kode untuk project ini di repositori kode Gemma Cookbook. Jika tidak, Anda dapat mulai memperluas project menggunakan petunjuk berikut.
Ringkasan
Tutorial ini memandu Anda menyiapkan, menjalankan, dan memperluas aplikasi asisten email bisnis yang dibuat dengan Gemma, Python, dan Flask. Project ini menyediakan antarmuka pengguna web dasar yang dapat Anda ubah agar sesuai dengan kebutuhan Anda. Aplikasi ini dibuat untuk mengekstrak data dari email pelanggan ke dalam struktur untuk toko roti fiktif. Anda dapat menggunakan pola aplikasi ini untuk tugas bisnis apa pun yang menggunakan input teks dan output teks.
Gambar 1. Antarmuka pengguna project untuk memproses pertanyaan email toko roti
Persyaratan hardware
Jalankan proses penyesuaian ini di komputer dengan unit pemrosesan grafis (GPU) atau Tensor processing unit (TPU), dan memori GPU atau TPU yang cukup untuk menyimpan model yang ada, ditambah data tuning. Untuk menjalankan konfigurasi tuning dalam , Anda membutuhkan memori GPU sekitar 16 GB, jumlah memori RAM, dan kapasitas disk minimum 50 GB.
Anda dapat menjalankan bagian penyesuaian model Gemma dari tutorial ini menggunakan Colab dengan runtime T4 GPU. Jika Anda mem-build project ini di instance VM Google Cloud, konfigurasi instance dengan mengikuti persyaratan berikut:
- Hardware GPU: NVIDIA T4 diperlukan untuk menjalankan project ini (NVIDIA Direkomendasikan L4 atau lebih tinggi)
- Operating System: Pilih opsi Deep Learning on Linux, khususnya Deep Learning VM dengan CUDA 12.3 M124 dengan Driver perangkat lunak GPU.
- Ukuran boot disk: Sediakan ruang disk minimal 50 GB untuk data, model, dan software pendukung Anda.
Penyiapan project
Petunjuk ini akan memandu Anda menyiapkan project ini untuk pengembangan dan pengujian. Langkah-langkah pengaturan umumnya termasuk menginstal perangkat lunak prasyarat, meng-clone project dari repositori kode, menyetel beberapa lingkungan variabel, menginstal library Python, dan menguji aplikasi web.
Menginstal dan mengonfigurasi
Project ini menggunakan Python 3 dan Lingkungan Virtual (venv
) untuk mengelola paket
dan menjalankan aplikasi. Petunjuk penginstalan berikut ditujukan untuk mesin host Linux.
Untuk menginstal software yang diperlukan:
Instal Python 3 dan paket lingkungan virtual
venv
untuk Python:sudo apt update sudo apt install git pip python3-venv
Meng-clone project
Download kode project ke komputer pengembangan Anda. Anda memerlukan software kontrol sumber git untuk mengambil kode sumber project.
Untuk mendownload kode project:
Clone repositori git menggunakan perintah berikut:
git clone https://github.com/google-gemini/gemma-cookbook.git
Secara opsional, konfigurasikan repositori git lokal Anda untuk menggunakan checkout sparse, jadi Anda hanya memiliki file untuk project ini:
cd gemma-cookbook/ git sparse-checkout set Demos/business-email-assistant/ git sparse-checkout init --cone
Menginstal library Python
Instal library Python dengan lingkungan virtual Python venv
yang diaktifkan untuk mengelola paket dan dependensi Python. Pastikan Anda mengaktifkan
lingkungan virtual Python sebelum menginstal library Python dengan penginstal
pip
. Untuk informasi selengkapnya tentang penggunaan lingkungan virtual Python, lihat
Dokumentasi Python venv.
Untuk menginstal library Python:
Di jendela terminal, buka direktori
business-email-assistant
:cd Demos/business-email-assistant/
Konfigurasikan dan aktifkan lingkungan virtual Python (venv) untuk project ini:
python3 -m venv venv source venv/bin/activate
Instal library Python yang diperlukan untuk project ini menggunakan Skrip
setup_python
:./setup_python.sh
Menetapkan variabel lingkungan
Project ini memerlukan beberapa variabel lingkungan untuk dijalankan,
termasuk nama pengguna Kaggle dan token Kaggle API. Anda harus memiliki Kaggle
dan meminta akses ke model Gemma agar dapat mendownloadnya. Untuk
project ini, Anda menambahkan Nama Pengguna Kaggle dan token Kaggle API ke dua file
.env
, yang masing-masing dibaca oleh aplikasi web dan program penyesuaian.
Untuk menetapkan variabel lingkungan:
- Dapatkan nama pengguna Kaggle Anda dan kunci token Anda dengan mengikuti instruksi di dokumentasi Kaggle.
- Dapatkan akses ke model Gemma dengan mengikuti petunjuk Mendapatkan akses ke Gemma di halaman Penyiapan Gemma.
- Buat file variabel lingkungan untuk project, dengan membuat
File teks
.env
di setiap lokasi berikut dalam clone project Anda:email-processing-webapp/.env model-tuning/.env
Setelah membuat file teks
.env
, tambahkan setelan berikut ke kedua file:KAGGLE_USERNAME=<YOUR_KAGGLE_USERNAME_HERE> KAGGLE_KEY=<YOUR_KAGGLE_KEY_HERE>
Menjalankan dan menguji aplikasi
Setelah Anda menyelesaikan penginstalan dan konfigurasi project, jalankan aplikasi web untuk mengonfirmasi bahwa Anda telah mengonfigurasinya dengan benar. Anda harus melakukannya sebagai pemeriksaan dasar sebelum mengedit project untuk penggunaan Anda sendiri.
Untuk menjalankan dan menguji project:
Di jendela terminal, buka direktori
email-processing-webapp
:cd business-email-assistant/email-processing-webapp/
Jalankan aplikasi menggunakan skrip
run_app
:./run_app.sh
Setelah memulai aplikasi web, kode program akan mencantumkan URL tempat Anda dapat menjelajahi dan menguji. Biasanya, alamat ini adalah:
http://127.0.0.1:5000/
Di antarmuka web, tekan tombol Dapatkan data di bawah input pertama kolom untuk menghasilkan respons dari model.
Respons pertama dari model setelah Anda menjalankan aplikasi memerlukan waktu lebih lama karena harus menyelesaikan langkah-langkah inisialisasi pada generasi pertama yang dijalankan. Permintaan dan pembuatan perintah berikutnya pada aplikasi web yang sudah berjalan selesai dalam waktu lebih singkat.
Memperluas aplikasi
Setelah menjalankan aplikasi, Anda dapat memperluasnya dengan memodifikasi pengguna antarmuka dan logika bisnis agar dapat berfungsi untuk tugas yang relevan bagi Anda atau bisnis Anda. Anda juga dapat mengubah perilaku model Gemma menggunakan kode aplikasi dengan mengubah komponen prompt yang dikirim aplikasi model AI generatif.
Aplikasi memberikan petunjuk ke model beserta data input dari pengguna, yaitu perintah lengkap model. Anda dapat mengubah petunjuk ini untuk mengubah perilaku model, seperti menentukan nama parameter dan struktur JSON yang akan dihasilkan. Cara yang lebih sederhana untuk mengubah perilaku model untuk memberikan petunjuk atau panduan tambahan bagi seperti menetapkan bahwa balasan yang dihasilkan tidak boleh berisi respons Pemformatan Markdown.
Untuk mengubah petunjuk dialog:
- Dalam proyek pengembangan, buka
File kode
business-email-assistant/email-processing-webapp/app.py
. Dalam kode
app.py
, tambahkan petunjuk tambahan ke fungsiget_prompt():
:def get_prompt(): return """ Extract the relevant details of this request and return them in JSON code, with no additional markdown formatting:\n"""
Contoh ini menambahkan frasa "tanpa pemformatan markdown tambahan" ke petunjuk.
Memberikan petunjuk perintah tambahan dapat sangat memengaruhi output yang dihasilkan, dan memerlukan lebih sedikit upaya untuk diterapkan. Anda harus coba ini terlebih dahulu untuk melihat apakah Anda bisa mendapatkan perilaku yang diinginkan dari model tersebut. Namun, penggunaan petunjuk perintah untuk mengubah perilaku model Gemma memiliki batas. Secara khusus, batas token input keseluruhan model, yang 8.192 token untuk Gemma 2, mengharuskan Anda menyeimbangkan petunjuk petunjuk yang mendetail dengan ukuran data baru yang Anda berikan sehingga Anda tidak melebihi batas tersebut.
Menyesuaikan model
Melakukan fine-tuning model Gemma adalah cara yang direkomendasikan untuk membuatnya merespons tugas-tugas tertentu dengan lebih andal. Secara khusus, jika Anda ingin model membuat JSON dengan struktur tertentu, termasuk parameter yang diberi nama khusus, Anda harus mempertimbangkan untuk menyesuaikan model untuk perilaku tersebut. Bergantung pada tugas yang Anda inginkan untuk diselesaikan model, Anda dapat mencapai tujuan fungsionalitas dengan 10 hingga 20 contoh. Bagian tutorial ini menjelaskan cara menyiapkan dan menjalankan penyesuaian pada model Gemma untuk tugas tertentu.
Petunjuk berikut menjelaskan cara melakukan operasi penyesuaian di lingkungan VM. Namun, Anda juga dapat melakukan operasi penyesuaian ini menggunakan notebook Colab terkait untuk project ini.
Persyaratan hardware
Persyaratan komputasi untuk fine-tuning sama dengan persyaratan hardware untuk keseluruhan project. Anda dapat menjalankan operasi penyesuaian di lingkungan Colab dengan runtime GPU T4 jika Anda membatasi token input menjadi 256 dan ukuran batch menjadi 1.
Menyiapkan data
Sebelum mulai men-tuning model Gemma, Anda harus menyiapkan data untuk tuning. Saat menyesuaikan model untuk tugas tertentu, Anda memerlukan serangkaian contoh permintaan dan respons. Contoh berikut akan menampilkan teks permintaan, tanpa keterangan petunjuk, dan teks respons yang diharapkan. Untuk memulai, Anda harus mempersiapkan satu set data dengan sekitar 10 contoh. Contoh-contoh ini harus mewakili jenis permintaan dan respons yang ideal. Pastikan permintaan dan respons tidak berulang, karena hal itu dapat menyebabkan respons model menjadi berulang dan tidak menyesuaikan dengan tepat terhadap variasi permintaan. Jika Anda menyesuaikan model untuk menghasilkan format data terstruktur, pastikan semua respons yang diberikan benar-benar sesuai dengan format output data yang Anda inginkan. Hal berikut tabel ini menunjukkan beberapa contoh {i>record<i} dari {i>dataset<i} contoh kode ini:
Permintaan | Respons |
---|---|
Halo Indian Bakery Central,\nApakah Anda memiliki 10 pendas, dan tiga puluh bundi ladoos? Apakah Anda juga menjual frosting vanila dan kue rasa cokelat. Saya mencari ukuran 6 inci | { "type": "inquiry", "item": [ { "name": "pendas", "quantity": 10 }, { "name": "bundi ladoos", "quantity": 30 }, { "name": "kue", "filling": null, "frosting": "vanila", "flavor": "cokelat", "size": "6 inci" } ] } |
Saya melihat bisnis Anda di Google Maps. Apa Anda menjual jellabi dan gulab jamun? | { "type": "inquiry", "item": [ { "name": "jellabi", "quantity": null }, { "name": "gulab jamun", "quantity": null } ] } |
Tabel 1. Listingan sebagian set data penyesuaian untuk data email toko roti ekstraktor.
Format data dan pemuatan
Anda dapat menyimpan data penyesuaian dalam format apa pun yang praktis, termasuk
data database, file JSON, CSV, atau file teks biasa, selama Anda memiliki
cara untuk mengambil data dengan kode Python. Project ini membaca file JSON
dari direktori data
ke dalam array objek kamus.
Dalam contoh program balik ini, set data tuning dimuat dalam
Modul model-tuning/main.py
menggunakan fungsi prepare_tuning_dataset()
:
def prepare_tuning_dataset():
# collect data from JSON files
prompt_data = read_json_files_to_dicts("./data")
...
Seperti yang disebutkan sebelumnya, Anda dapat menyimpan set data dalam format yang nyaman, selama Anda dapat mengambil permintaan dengan respons terkait dan menyusunnya menjadi string teks yang digunakan sebagai data penyesuaian.
Menyusun kumpulan data tuning
Untuk proses penyesuaian yang sebenarnya, program ini menggabungkan setiap permintaan dan respons
menjadi satu string dengan petunjuk perintah dan konten
respons. Program penyesuaian kemudian membuat token string untuk digunakan oleh
model. Anda bisa melihat kode untuk menyusun kumpulan data tuning di
fungsi prepare_tuning_dataset()
modul model-tuning/main.py
, sebagai berikut:
def prepare_tuning_dataset():
...
# prepare data for tuning
tuning_dataset = []
template = "{instruction}\n{response}"
for prompt in prompt_data:
tuning_dataset.append(template.format(instruction=prompt["prompt"],
response=prompt["response"]))
return tuning_dataset
Fungsi ini mengambil data sebagai inputnya dan memformatnya dengan menambahkan pemisah baris antara petunjuk dan respons.
Membuat bobot model
Setelah menyiapkan dan memuat data tuning, Anda bisa menjalankan program ini. Proses penyesuaian untuk aplikasi contoh ini menggunakan Keras NLP untuk men-tuning model dengan Low Rank Adaptation atau teknik LoRA. untuk membuat bobot model baru. Dibandingkan dengan tuning presisi penuh, menggunakan LoRA lebih lebih hemat-memori karena memperkirakan perubahan bobot model. Anda kemudian dapat menempatkan perkiraan bobot ini ke atas bobot model untuk mengubah perilaku model.
Untuk melakukan run tuning dan menghitung bobot baru:
Di jendela terminal, buka direktori
model-tuning/
.cd business-email-assistant/model-tuning/
Jalankan proses penyesuaian menggunakan skrip
tune_model
:./tune_model.sh
Proses penyesuaian memerlukan waktu beberapa menit, bergantung pada resource komputasi yang tersedia. Setelah berhasil diselesaikan, program tuning akan menulis *.h5
baru
file bobot dalam direktori model-tuning/weights
dengan format berikut:
gemma2-2b_inquiry_tuned_4_epoch##.lora.h5
Pemecahan masalah
Jika penyesuaian tidak berhasil diselesaikan, ada dua kemungkinan alasan:
- Kehabisan memori atau resource habis: Error ini terjadi saat
proses tuning meminta memori yang melebihi memori GPU atau CPU yang tersedia
memori. Pastikan Anda tidak menjalankan aplikasi web saat proses
penyesuaian berjalan. Jika Anda menyesuaikan pada perangkat
dengan memori GPU 16 GB,
pastikan
token_limit
Anda disetel ke 256 danbatch_size
ditetapkan ke 1. - Driver GPU tidak diinstal atau tidak kompatibel dengan JAX: Proses pengaktifan memerlukan penginstalan driver hardware di perangkat komputasi yang kompatibel dengan versi library JAX. Untuk mengetahui detail selengkapnya, lihat dokumentasi penginstalan JAX.
Men-deploy model yang disesuaikan
Proses tuning menghasilkan beberapa bobot berdasarkan data tuning dan jumlah total epoch yang ditetapkan dalam aplikasi tuning. Secara default, penyesuaian menghasilkan 3 file bobot model, satu untuk setiap epoch tuning. Masing-masing epoch penyesuaian berturut-turut menghasilkan bobot yang mereproduksi hasil data tuning. Anda dapat melihat rasio akurasi untuk setiap epoch dalam output terminal proses penyesuaian, sebagai berikut:
...
8/8 ━━━━━━━━━━━━━━━━━━━━ 121s 195ms/step - loss: 0.5432 - sparse_categorical_accuracy: 0.5982
Epoch 2/3
8/8 ━━━━━━━━━━━━━━━━━━━━ 2s 194ms/step - loss: 0.3320 - sparse_categorical_accuracy: 0.6966
Epoch 3/3
8/8 ━━━━━━━━━━━━━━━━━━━━ 2s 192ms/step - loss: 0.2135 - sparse_categorical_accuracy: 0.7848
Meskipun Anda ingin tingkat akurasi yang relatif tinggi, sekitar 0,80, Anda tidak perlu menginginkan laju yang terlalu tinggi, atau sangat mendekati 1,00, bobot yang mendekati overfitting data tuning. Ketika hal itu terjadi, tidak berperforma baik pada permintaan yang berbeda secara signifikan dengan contoh tuning. Secara default, skrip deployment memilih epoch 3 bobot, yang biasanya memiliki tingkat akurasi sekitar 0,80.
Untuk men-deploy bobot yang dihasilkan ke aplikasi web:
Di jendela terminal, buka direktori
model-tuning
:cd business-email-assistant/model-tuning/
Jalankan proses tuning menggunakan skrip
deploy_weights
:./deploy_weights.sh
Setelah menjalankan skrip ini, Anda akan melihat file *.h5
baru di
Direktori email-processing-webapp/weights/
.
Menguji model baru
Setelah Anda men-deploy bobot baru ke aplikasi, saatnya untuk mencoba model yang baru di-tuning. Anda dapat melakukannya dengan menjalankan ulang aplikasi web dan menghasilkan respons.
Untuk menjalankan dan menguji project:
Di jendela terminal, buka direktori
email-processing-webapp
:cd business-email-assistant/email-processing-webapp/
Jalankan aplikasi menggunakan skrip
run_app
:./run_app.sh
Setelah memulai aplikasi web, kode program akan mencantumkan URL tempat Anda dapat menjelajahi dan menguji, biasanya alamat ini adalah:
http://127.0.0.1:5000/
Di antarmuka web, tekan tombol Dapatkan data di bawah input pertama kolom untuk menghasilkan respons dari model.
Sekarang Anda telah menyesuaikan dan men-deploy model Gemma dalam aplikasi. Bereksperimen dengan aplikasi dan mencoba menentukan batas pembuatan model yang di-tuning kemampuan untuk tugas Anda. Jika Anda menemukan skenario saat model tidak berperforma baik, pertimbangkan untuk menambahkan beberapa permintaan tersebut ke daftar data contoh penyesuaian dengan menambahkan permintaan dan memberikan respons yang ideal. Kemudian, jalankan ulang proses penyesuaian, deploy ulang bobot baru, dan uji output.
Referensi lainnya
Untuk mengetahui informasi selengkapnya tentang project ini, lihat repositori kode Gemma Cookbook. Jika Anda memerlukan bantuan untuk membuat aplikasi atau ingin berkolaborasi dengan developer lainnya, lihat Perselisihan Komunitas Google Developers server tertentu. Untuk project Build with Google AI lainnya, lihat playlist video.