Dalam tutorial ini, Anda akan menemukan cara menerapkan model Meta Llama 3.2-90b-vision-instruct yang sekarang tersedia di watsonx.ai untuk tugas visi komputer seperti teks gambar dan jawaban pertanyaan visual.
Banyak dari kita yang akrab dengan aplikasi AI unimodal. Alat AI unimodal yang populer adalah ChatGPT. Chatbot seperti ChatGPT menggunakan pemrosesan bahasa alami (NLP) untuk memahami pertanyaan pengguna dan mengotomatiskan tanggapan secara real time. Jenis input yang dapat diterapkan pada model bahasa besar unimodal (LLM) ini terbatas pada teks.
Kecerdasan buatan multimodal (AI) bergantung pada model machine learning yang dibangun di atas neural networks. Neural networks ini mampu memproses dan mengintegrasikan informasi dari berbagai jenis data dengan menggunakan teknik pembelajaran mendalam yang kompleks. Modalitas berbeda yang dihasilkan oleh model AI generatif ini, kadang-kadang disebut model AI, dapat mencakup teks, gambar, video dan input audio.
Sistem AI multimodal memiliki banyak contoh penggunaan dunia nyata mulai dari diagnosis gambar medis dalam pengaturan perawatan kesehatan menggunakan visi komputer hingga pengenalan suara dalam aplikasi terjemahan. Kemajuan teknologi AI ini dapat mengoptimalkan berbagai domain. Keuntungan utama dari arsitektur multimodal adalah kemampuan untuk memproses berbagai jenis data.
AI multimodal mencakup tiga elemen:
Modul input
Modul input dibangun di atas beberapa neural networks unimodal untuk pra-pemrosesan berbagai jenis data. Di sini, data disiapkan untuk algoritma machine learning yang dilakukan dalam modul fusi.
Modul fusi
Penggabungan, penyelarasan, dan pemrosesan data terjadi dalam modul ini. Proses fusi terjadi untuk setiap modalitas data. Beberapa teknik biasa digunakan dalam modul ini. Salah satu contohnya adalah fusi awal, di mana data mentah dari semua jenis input digabungkan. Selain itu, fusi tengah adalah ketika data dari modalitas yang berbeda dikodekan pada tahap prapemrosesan yang berbeda. Terakhir, fusi akhir mengkonsolidasikan data setelah awalnya diproses dalam modul input oleh model berbeda yang sesuai dengan setiap modalitas.
Modul output
Modul output menghasilkan hasil dalam format output yang diinginkan dengan memahami data yang dihasilkan dalam modul fusi. Output ini dapat mengambil berbagai bentuk seperti teks, gambar atau kombinasi format.
Lihat video YouTube Teknologi IBM ini yang akan memandu Anda melalui petunjuk penyiapan berikut pada langkah 1 dan 2.
Meskipun Anda dapat memilih dari berbagai alat, tutorial ini paling cocok untuk Jupyter Notebook. Jupyter Notebook banyak digunakan dalam ilmu data untuk menggabungkan kode dengan berbagai sumber data seperti teks, gambar, dan visualisasi data.
Tutorial ini memandu Anda melalui cara menyiapkan akun IBM untuk menggunakan Jupyter Notebook.
Masuk ke watsonx.ai menggunakan akun IBM Cloud Anda.
Buat proyek watsonx.ai.
Anda bisa mendapatkan ID proyek dari dalam proyek Anda. Klik tab Kelola . Kemudian, salin ID proyek dari bagian Detail di halaman Umum . Anda memerlukan ID ini untuk tutorial ini.
Buat Jupyter Notebook.
Langkah ini akan membuka lingkungan notebook tempat Anda dapat menyalin kode dari tutorial ini untuk menerapkan penyetelan prompt sendiri. Sebagai alternatif, Anda dapat mengunduh notebook ini ke sistem lokal Anda dan mengunggahnya ke proyek watsonx.ai Anda sebagai aset. Aplikasi Jupyter Notebook ini bersama dengan kumpulan data yang digunakan dapat ditemukan di GitHub.
Untuk menghindari konflik ketergantungan paket Python, kami merekomendasikan untuk menyiapkan lingkungan virtual.
Untuk tutorial ini, kami sarankan menggunakan model Meta 3.2-90b-vision-instruct dengan watsonx.ai untuk mencapai hasil yang serupa. Anda bebas menggunakan model AI apa pun yang mendukung pembelajaran multimodal pilihan Anda. Ada beberapa model AI multimodal untuk dipilih termasuk GPT-4 V (ision) dan DALL-E 3 dari OpenAI serta Gemini dari Google. Pastikan Anda menggunakan API yang sesuai jika bekerja dengan model lain karena tutorial ini dirancang untuk watsonx.ai.
Buat instans layanan watsonx.ai Runtime (pilih wilayah yang sesuai dan pilih paket Lite, yang merupakan instans gratis).
Buat Kunci API.
Tautkan instans layanan watsonx.ai Runtime ke proyek yang telah Anda buat di watsonx.ai.
Kita membutuhkan beberapa pustaka dan modul untuk tutorial ini. Pastikan untuk mengimpor yang berikut ini; jika tidak diinstal, Anda dapat menyelesaikan masalah ini dengan instalasi pip cepat.
Untuk menyiapkan kredensial, kita memerlukan WATSONX_APIKEY dan WATSONX_PROJECT_ID yang Anda buat dalam langkah 1. Anda dapat menyimpannya di file .env di direktori Anda atau mengganti teks placeholder. Kita juga akan mengatur URL yang berfungsi sebagai titik akhir API.
Kita dapat menggunakan kelas kredensial untuk mengenkapsulasi kredensial yang telah dilewati.
Dalam tutorial ini, kita akan bekerja dengan beberapa gambar untuk aplikasi AI multimodal seperti teks gambar dan deteksi objek. Gambar yang akan kami gunakan dapat diakses menggunakan URL berikut. Kita dapat menyimpan URL ini dalam daftar untuk mengkodekannya secara berulang.
Untuk mendapatkan pemahaman yang lebih baik tentang input data kami, mari tampilkan gambarnya.
Output:
url_image_0
url_image_1
url_image_2
url_image_3
Untuk mengkodekan gambar-gambar ini dengan cara yang dapat dicerna untuk LLM, kita akan mengkodekan gambar ke byte yang kemudian kita dekode ke representasi UTF-8.
Sekarang gambar kita dapat diteruskan ke LLM, mari kita atur fungsi untuk panggilan API watsonx kita. Fungsi augment_api_request_body mengambil kueri pengguna dan gambar sebagai parameter dan menambah isi permintaan API. Kita akan menggunakan fungsi ini di setiap iterasi.
def augment_api_request_body(user_query, image): messages = [ { "role": "user", "content": [{ "type": "text", "text": 'You are a helpful assistant. Answer the following user query in 1 or 2 sentences: ' + user_query }, { "type": "image_url", "image_url": { "url": f"data:image/jpeg;base64,{image}", } }] } ] return messages
Mari kita membuat instas antarmuka model menggunakan kelas ModeLinference. Dalam tutorial ini, kita akan menggunakan model themeta-llama/llama-3-2-90b-vision-instruct.
Sekarang, kita dapat merunut melalui gambar-gambar kita untuk melihat deskripsi teks yang dihasilkan oleh model sebagai respons terhadap pertanyaan, “Apa yang terjadi dalam gambar ini?”
Output:
Gambar ini menunjukkan jalan kota yang sibuk dengan gedung-gedung tinggi dan mobil, dan orang-orang berjalan di trotoar. Jalan dipenuhi dengan lampu lalu lintas, pepohonan, dan rambu-rambu jalan, dan ada beberapa orang yang menyeberang jalan di persimpangan.
Gambar tersebut menggambarkan seorang wanita dengan pakaian atletik berlari di jalan, dengan sebuah bangunan dan mobil terlihat di latar belakang. Wanita itu mengenakan hoodie kuning, legging hitam, dan sepatu kets, dan tampaknya terlibat dalam jogging atau lari santai.
Gambar menggambarkan daerah banjir, dengan air menutupi tanah dan bangunan sekitarnya. Banjir yang terjadi tampak sangat parah, dengan ketinggian air mencapai atap beberapa bangunan.
**Deskripsi Gambar**
* Gambar menunjukkan label nutrisi secara close-up, dengan jari yang menunjuk ke label tersebut.
* Label memberikan informasi terperinci tentang kandungan gizi suatu makanan tertentu, termasuk:
+ Kalori
+ Lemak
+ Natrium
+ Karbohidrat
+ Informasi relevan lainnya
* Label ditampilkan pada latar belakang putih dengan teks hitam, membuatnya mudah dibaca dan dipahami.
Model Llama 3.2-90b-vision-instruct berhasil memuat teks setiap gambar dengan detail yang signifikan.
Sekarang kita telah memamerkan kemampuan model untuk melakukan konversi gambar-ke-teks pada langkah sebelumnya, mari kita ajukan model beberapa pertanyaan yang memerlukan deteksi objek. Mengenai gambar kedua yang menggambarkan wanita berlari di luar ruangan, kami akan bertanya kepada modelnya, "Berapa banyak mobil di gambar ini?"
Output: Ada satu mobil dalam gambar ini. Mobil diparkir di jalan, di sebelah kanan gedung.
Model mengidentifikasi dengan benar kendaraan tunggal dalam gambar. Sekarang, mari kita tanyakan tentang kerusakan yang ditampilkan dalam gambar banjir.
Output: Kerusakan pada gambar ini sangat parah, dengan air banjir menutupi sebagian besar lahan dan berpotensi menyebabkan kerusakan parah pada struktur dan tanaman. Ketinggian air tampaknya setidaknya setinggi pinggang, yang dapat menyebabkan kerugian yang signifikan bagi pemilik properti dan petani di daerah tersebut.
Respons ini menyoroti nilai yang dimiliki AI multimodal untuk domain seperti asuransi. Model mampu deteksi tingkat keparahan kerusakan yang disebabkan oleh rumah yang kebanjiran. Ini bisa menjadi alat yang ampuh untuk meningkatkan waktu pemrosesan klaim asuransi.
Selanjutnya, mari kita tanya model berapa banyak kandungan natrium dalam gambar label nutrisi.
Output: **Kandungan Sodium: ** 640 miligram (mg)
Hebat! Model mampu membedakan objek dalam gambar mengikuti permintaan pengguna. Kami mendorong Anda untuk mencoba lebih banyak pertanyaan untuk lebih menunjukkan kinerja model.
Dalam tutorial ini, Anda menggunakan model Llama 3.2-90b-vision-instruct untuk melakukan operasi multimodal termasuk teks gambar dan jawaban pertanyaan visual. Untuk contoh penggunaan model ini lebih lanjut, kami mendorong Anda untuk memeriksa halaman dokumentasi resmi. Di sana Anda akan menemukan informasi lebih lanjut tentang parameter dan kemampuan model. Output Python penting karena menunjukkan kemampuan sistem multimodal untuk mengekstrak informasi dari data multimodal.
Latih, validasi, lakukan tuning, dan terapkan AI generatif, model dasar, dan kemampuan machine learning dengan IBM watsonx.ai, studio perusahaan generasi berikutnya untuk pembangun AI. Bangun aplikasi AI dalam waktu singkat, dengan sedikit data.
Gunakan AI di bisnis Anda dalam perpaduan antara keahlian AI terdepan di industri dari IBM dan portofolio solusi Anda.
Temukan kembali alur kerja dan operasi yang penting dengan menambahkan AI untuk memaksimalkan pengalaman, pengambilan keputusan secara real-time, dan nilai bisnis.