Phi-4-multimodal adalah model fondasi multimodal yang ringan yang dikembangkan oleh Microsoft. Ini adalah bagian dari keluarga Phi milik Microsoft yang berisi small language models (SLM).
Dalam tutorial ini, saya akan menjelaskan langkah demi langkah cara menggunakan Phi-4-multimodal untuk membangun sebuah tutor bahasa multimodal yang dapat bekerja dengan teks, gambar, dan audio. Fitur utama aplikasi ini adalah:
Pembelajaran berbasis teks: Menyediakan koreksi tata bahasa secara real-time, terjemahan bahasa, restrukturisasi kalimat, dan saran kosakata yang kontekstual.
Pembelajaran berbasis gambar: Mengekstrak dan menerjemahkan teks dari gambar serta meringkas konten visual untuk pemahaman yang lebih baik.
Pembelajaran berbasis audio: Mengonversi ucapan menjadi teks, mengevaluasi ketepatan pelafalan, dan memungkinkan terjemahan ucapan secara real-time ke berbagai bahasa.
Mari kita mulai dengan pengenalan singkat model Phi-4-multimodal, lalu kita akan mulai membangun aplikasinya.
Apa itu Phi-4-Multimodal?
Phi-4-multimodal adalah model AI tingkat lanjut yang dirancang untuk pemrosesan teks, visi, dan ucapan. Model ini memungkinkan integrasi berbagai modalitas secara mulus, sehingga ideal untuk aplikasi pembelajaran bahasa. Beberapa kemampuan utamanya meliputi:
Pemrosesan teks: Termasuk koreksi tata bahasa, penerjemahan, dan konstruksi kalimat.
Pemrosesan visi: Phi 4 dapat melakukan optical character recognition (OCR), peringkasan gambar, dan interaksi multimodal.
Pemrosesan ucapan: Dapat melakukan automatic speech recognition (ASR), memberi umpan balik pelafalan, serta terjemahan ucapan ke teks.
Dengan panjang konteks 128K token, model Phi-4 multimodal dioptimalkan untuk penalaran yang efisien dan lingkungan dengan keterbatasan memori, sehingga sangat cocok untuk pembelajaran bahasa berbasis AI secara real-time.
Langkah 1: Prasyarat
Aplikasi tutor bahasa multimodal yang akan kita bangun adalah alat interaktif bertenaga AI yang dirancang untuk membantu pengguna mempelajari bahasa baru melalui kombinasi interaksi berbasis teks, gambar, dan audio.
Sebelum mulai, pastikan kita telah memasang alat dan pustaka berikut:
Python 3.8+
torch
Transformers
PIL
Soundfile
Gradio
Jalankan perintah berikut untuk memasang dependensi yang diperlukan:
pip install gradio transformers torch soundfile pillowDidukung oleh
Kita juga perlu memastikan bahwa FlashAttention2 terpasang untuk kinerja yang lebih baik:
pip install flash-attn --no-build-isolationDidukung oleh
Catatan: Proyek ini menggunakan GPU A100 pada notebook Google Colab. Jika Anda menggunakan GPU yang lebih lama (misalnya, NVIDIA V100), Anda mungkin perlu menonaktifkan FlashAttention2 dengan menyetel _attn_implementation="eager" pada langkah inisialisasi model.
Setelah semua dependensi di atas terpasang, jalankan perintah impor berikut:
import gradio as gr
import torch
import requests
import io
import os
import soundfile as sf
from PIL import Image
from transformers import AutoModelForCausalLM, AutoProcessor, GenerationConfigDidukung oleh
Langkah 2: Memuat Phi-4-Multimodal
Untuk memanfaatkan kemampuan multimodal Phi-4, pertama kita memuat model dan processornya. Jalur model diatur dari Hugging Face, sementara processor menangani tokenisasi teks, pengubahan ukuran dan normalisasi gambar, serta konversi gelombang audio ke format yang kompatibel dengan model untuk pemrosesan multimodal yang mulus.
# Load model and processor
model_path ="microsoft/Phi-4-multimodal-instruct"
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path,
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
_attn_implementation='flash_attention_2',).cuda()
generation_config = GenerationConfig.from_pretrained(model_path)Didukung oleh
Langkah inisialisasi model menggunakan fungsi 'AutoModelForCausalLM.from_pretrained() untuk memuat model Phi-4 yang telah dilatih sebelumnya untuk causal language modeling (CLM) dan memuat model ke GPU menggunakan device_map="cuda".
Parameter kunci pada langkah ini adalah _attn_implementation='flash_attention_2'`, yang menggunakan FlashAttention2 untuk mekanisme attention yang lebih cepat dan hemat memori, terutama untuk pemrosesan konteks panjang.
Langkah 3: Membangun Fungsionalitas Utama
Sekarang model sudah dimuat, mari kita bangun fungsionalitas utamanya.
1. Membersihkan respons
Aspek penting dari proyek berbasis LLM atau VLM adalah memastikan model menghasilkan respons yang akurat dan relevan. Ini juga mencakup menghapus teks prompt dari keluaran, sehingga pengguna menerima respons yang bersih dan langsung tanpa instruksi awal muncul di bagian awal.
defclean_response(response, instruction_keywords):"""Removes the prompt text dynamically based on instruction keywords."""for keyword in instruction_keywords:if response.lower().startswith(keyword.lower()):
response = response[len(keyword):].strip()return responseDidukung oleh
Kita cukup menggunakan fungsi strip() untuk memangkas teks prompt berdasarkan kata kunci instruksi.
2. Pemrosesan input
Sekarang, mari proses input kita, yang bisa berupa teks, gambar, atau audio, bergantung pada masukan atau skenario pengguna.
Fungsi di atas bertanggung jawab menangani input teks, gambar, dan audio serta menghasilkan respons menggunakan model Phi-4-multimodal. Berikut uraian teknis alur kerja ini:
Pemrosesan input gambar: Jika jenis input adalah "Image", prompt diformat dengan placeholder gambar (<|image_1|>). Gambar kemudian dimuat, dan processor melakukan tokenisasi teks yang menyertainya sembari mengekstraksi fitur visual. Input yang telah diproses dipindahkan ke GPU untuk komputasi yang optimal.
Pemrosesan input audio: Jika jenis input adalah "Audio", prompt disusun dengan placeholder audio (<|audio_1|>). Berkas audio dibaca menggunakan fungsi sf.read(), mengekstraksi gelombang mentah dan laju sampel. Processor kemudian mengenkode audio dan teks, memastikan integrasi yang mulus untuk pemahaman multimodal.
Pemrosesan input teks: Jika jenis input adalah "Text", teks disematkan langsung ke dalam prompt. Processor melakukan tokenisasi dan pengodean input, menyiapkannya untuk diproses lebih lanjut oleh model.
3. Terjemahan dan koreksi tata bahasa
Selanjutnya, kita memproses teks untuk terjemahan dan koreksi tata bahasa menggunakan model Phi-4-multimodal.
defprocess_text_translate(text, target_language):
prompt =f'Translate the following text to {target_language}: "{text}"'return process_input(text,"Text", prompt)defprocess_text_grammar(text):
prompt =f'Check the grammar and provide corrections if needed for the following text: "{text}"'return process_input(text,"Text", prompt)Didukung oleh
Fungsi process_text_translate() secara dinamis membangun prompt terjemahan dengan menentukan bahasa target dan meneruskan teks input serta prompt terstruktur ke fungsi process_input(), lalu mengembalikan teks terjemahan.
Demikian pula, fungsi process_text_grammar() membangun prompt koreksi tata bahasa, memanggil fungsi process_input() dengan teks dan jenis input, serta mengembalikan versi teks yang telah diperbaiki tata bahasanya. Kedua fungsi ini menyederhanakan pemrosesan bahasa dengan memanfaatkan kemampuan model untuk terjemahan dan koreksi tata bahasa.
Langkah 4: Membangun Demo Multimodal dengan Gradio
Kini, seluruh fungsi logika utama sudah siap. Selanjutnya, kita membangun UI interaktif dengan Gradio.
Kode di atas mengorganisasi antarmuka Gradio ke dalam tiga tab interaktif, yaitu pembelajaran berbasis teks, berbasis gambar, dan berbasis audio, yang masing-masing dirancang untuk fungsionalitas pembelajaran bahasa yang berbeda.
Pengguna dapat memasukkan teks untuk terjemahan atau koreksi tata bahasa, mengunggah gambar untuk ekstraksi teks dan peringkasan, atau menyediakan audio untuk transkripsi ucapan dan terjemahan.
Setiap fungsi dipicu menggunakan metode click() milik Gradio, yang memanggil fungsi pemrosesan seperti process_text_translate(), process_text_grammar(), dan process_input() seperti dibahas di atas, dengan meneruskan input yang diperlukan dan memperbarui keluaran secara dinamis.
Clear disertakan pada tiap tab untuk mengatur ulang input dan output, memastikan pengalaman pengguna yang lancar. Terakhir, antarmuka dijalankan dengan demo.launch(debug=True) yang memungkinkan pengembang dengan mudah men-debug kesalahan pada aplikasi.
Langkah 5: Menguji Aplikasi
Berikut beberapa eksperimen saya dengan aplikasi ini.
Terjemahan dan pemeriksaan tata bahasa
Untuk tugas terjemahan dan pemeriksaan tata bahasa, saya memberikan teks "Hello world" dan menginstruksikan model untuk menerjemahkannya ke dalam bahasa Prancis serta memverifikasi tata bahasanya (perhatikan tombol yang berbeda untuk terjemahan dan pemeriksaan tata bahasa).
Menerjemahkan teks di dalam gambar
Pada contoh ini, saya memberikan gambar rambu berhenti berbahasa Spanyol yang menginstruksikan pejalan kaki untuk tidak berjalan di jalur tertentu. Model menafsirkan makna rambu dengan akurat dan menghasilkan respons: "Jangan berjalan di rel."
Transkripsi dan terjemahan audio
Untuk transkripsi audio, saya memberikan berkas audio bahasa Inggris dan menginstruksikan model untuk mentranskripsikan ucapan tersebut serta menerjemahkan transkripsinya ke dalam bahasa Prancis.
Kesimpulan
Dalam tutorial ini, kita membangun tutor bahasa multimodal menggunakan model Phi-4 multimodal, yang memungkinkan pembelajaran bahasa berbasis teks, gambar, dan audio. Kita memanfaatkan kemampuan visi, ucapan, dan teks tingkat lanjut milik Phi-4 untuk menyediakan terjemahan real-time, koreksi tata bahasa, transkripsi ucapan, dan wawasan pembelajaran berbasis gambar. Proyek ini menunjukkan bagaimana AI multimodal dapat meningkatkan pendidikan bahasa dan aksesibilitas.
Saya adalah Google Developers Expert di ML (Gen AI), Kaggle 3x Expert, dan Women Techmakers Ambassador dengan pengalaman lebih dari 3 tahun di bidang teknologi. Saya ikut mendirikan startup health-tech pada 2020 dan sedang menempuh studi magister ilmu komputer di Georgia Tech dengan spesialisasi machine learning.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Pelajari cara membuat aplikasi yang didukung oleh kecerdasan buatan (AI) menggunakan alat pengembangan AI terbaru, termasuk OpenAI API, Hugging Face, dan LangChain.
Coba gunakan Llama 3 untuk menjalankan inferensi pada model yang telah dilatih sebelumnya, menyesuaikan model tersebut pada dataset kustom, dan mengoptimalkan kinerjanya.
Phi-4-multimodal adalah model fondasi multimodal yang ringan yang dikembangkan oleh Microsoft. Ini adalah bagian dari keluarga Phi milik Microsoft yang berisi small language models (SLM).
Dalam tutorial ini, saya akan menjelaskan langkah demi langkah cara menggunakan Phi-4-multimodal untuk membangun sebuah tutor bahasa multimodal yang dapat bekerja dengan teks, gambar, dan audio. Fitur utama aplikasi ini adalah:
Mari kita mulai dengan pengenalan singkat model Phi-4-multimodal, lalu kita akan mulai membangun aplikasinya.
Apa itu Phi-4-Multimodal?
Phi-4-multimodal adalah model AI tingkat lanjut yang dirancang untuk pemrosesan teks, visi, dan ucapan. Model ini memungkinkan integrasi berbagai modalitas secara mulus, sehingga ideal untuk aplikasi pembelajaran bahasa. Beberapa kemampuan utamanya meliputi:
Dengan panjang konteks 128K token, model Phi-4 multimodal dioptimalkan untuk penalaran yang efisien dan lingkungan dengan keterbatasan memori, sehingga sangat cocok untuk pembelajaran bahasa berbasis AI secara real-time.
Langkah 1: Prasyarat
Aplikasi tutor bahasa multimodal yang akan kita bangun adalah alat interaktif bertenaga AI yang dirancang untuk membantu pengguna mempelajari bahasa baru melalui kombinasi interaksi berbasis teks, gambar, dan audio.
Sebelum mulai, pastikan kita telah memasang alat dan pustaka berikut:
Jalankan perintah berikut untuk memasang dependensi yang diperlukan:
Kita juga perlu memastikan bahwa FlashAttention2 terpasang untuk kinerja yang lebih baik:
Catatan: Proyek ini menggunakan GPU A100 pada notebook Google Colab. Jika Anda menggunakan GPU yang lebih lama (misalnya, NVIDIA V100), Anda mungkin perlu menonaktifkan
FlashAttention2dengan menyetel_attn_implementation="eager"pada langkah inisialisasi model.Setelah semua dependensi di atas terpasang, jalankan perintah impor berikut:
Langkah 2: Memuat Phi-4-Multimodal
Untuk memanfaatkan kemampuan multimodal Phi-4, pertama kita memuat model dan processornya. Jalur model diatur dari Hugging Face, sementara processor menangani tokenisasi teks, pengubahan ukuran dan normalisasi gambar, serta konversi gelombang audio ke format yang kompatibel dengan model untuk pemrosesan multimodal yang mulus.
Langkah inisialisasi model menggunakan fungsi 'AutoModelForCausalLM.from_pretrained()
untuk memuat model Phi-4 yang telah dilatih sebelumnya untuk causal language modeling (CLM) dan memuat model ke GPU menggunakandevice_map="cuda".Parameter kunci pada langkah ini adalah _attn_implementation='flash_attention_2'`, yang menggunakan FlashAttention2 untuk mekanisme attention yang lebih cepat dan hemat memori, terutama untuk pemrosesan konteks panjang.
Langkah 3: Membangun Fungsionalitas Utama
Sekarang model sudah dimuat, mari kita bangun fungsionalitas utamanya.
1. Membersihkan respons
Aspek penting dari proyek berbasis LLM atau VLM adalah memastikan model menghasilkan respons yang akurat dan relevan. Ini juga mencakup menghapus teks prompt dari keluaran, sehingga pengguna menerima respons yang bersih dan langsung tanpa instruksi awal muncul di bagian awal.
Kita cukup menggunakan fungsi
strip()untuk memangkas teks prompt berdasarkan kata kunci instruksi.2. Pemrosesan input
Sekarang, mari proses input kita, yang bisa berupa teks, gambar, atau audio, bergantung pada masukan atau skenario pengguna.
Fungsi di atas bertanggung jawab menangani input teks, gambar, dan audio serta menghasilkan respons menggunakan model Phi-4-multimodal. Berikut uraian teknis alur kerja ini:
"Image", prompt diformat dengan placeholder gambar (<|image_1|>). Gambar kemudian dimuat, dan processor melakukan tokenisasi teks yang menyertainya sembari mengekstraksi fitur visual. Input yang telah diproses dipindahkan ke GPU untuk komputasi yang optimal."Audio", prompt disusun dengan placeholder audio (<|audio_1|>). Berkas audio dibaca menggunakan fungsisf.read(), mengekstraksi gelombang mentah dan laju sampel. Processor kemudian mengenkode audio dan teks, memastikan integrasi yang mulus untuk pemahaman multimodal."Text", teks disematkan langsung ke dalam prompt. Processor melakukan tokenisasi dan pengodean input, menyiapkannya untuk diproses lebih lanjut oleh model.3. Terjemahan dan koreksi tata bahasa
Selanjutnya, kita memproses teks untuk terjemahan dan koreksi tata bahasa menggunakan model Phi-4-multimodal.
Fungsi
process_text_translate()secara dinamis membangun prompt terjemahan dengan menentukan bahasa target dan meneruskan teks input serta prompt terstruktur ke fungsiprocess_input(), lalu mengembalikan teks terjemahan.Demikian pula, fungsi
process_text_grammar()membangun prompt koreksi tata bahasa, memanggil fungsiprocess_input()dengan teks dan jenis input, serta mengembalikan versi teks yang telah diperbaiki tata bahasanya. Kedua fungsi ini menyederhanakan pemrosesan bahasa dengan memanfaatkan kemampuan model untuk terjemahan dan koreksi tata bahasa.Langkah 4: Membangun Demo Multimodal dengan Gradio
Kini, seluruh fungsi logika utama sudah siap. Selanjutnya, kita membangun UI interaktif dengan Gradio.
Kode di atas mengorganisasi antarmuka Gradio ke dalam tiga tab interaktif, yaitu pembelajaran berbasis teks, berbasis gambar, dan berbasis audio, yang masing-masing dirancang untuk fungsionalitas pembelajaran bahasa yang berbeda.
Pengguna dapat memasukkan teks untuk terjemahan atau koreksi tata bahasa, mengunggah gambar untuk ekstraksi teks dan peringkasan, atau menyediakan audio untuk transkripsi ucapan dan terjemahan.
Setiap fungsi dipicu menggunakan metode
click()milik Gradio, yang memanggil fungsi pemrosesan sepertiprocess_text_translate(),process_text_grammar(), danprocess_input()seperti dibahas di atas, dengan meneruskan input yang diperlukan dan memperbarui keluaran secara dinamis.Clear disertakan pada tiap tab untuk mengatur ulang input dan output, memastikan pengalaman pengguna yang lancar. Terakhir, antarmuka dijalankan dengan
demo.launch(debug=True)yang memungkinkan pengembang dengan mudah men-debug kesalahan pada aplikasi.Langkah 5: Menguji Aplikasi
Berikut beberapa eksperimen saya dengan aplikasi ini.
Terjemahan dan pemeriksaan tata bahasa
Untuk tugas terjemahan dan pemeriksaan tata bahasa, saya memberikan teks "Hello world" dan menginstruksikan model untuk menerjemahkannya ke dalam bahasa Prancis serta memverifikasi tata bahasanya (perhatikan tombol yang berbeda untuk terjemahan dan pemeriksaan tata bahasa).
Menerjemahkan teks di dalam gambar
Pada contoh ini, saya memberikan gambar rambu berhenti berbahasa Spanyol yang menginstruksikan pejalan kaki untuk tidak berjalan di jalur tertentu. Model menafsirkan makna rambu dengan akurat dan menghasilkan respons: "Jangan berjalan di rel."
Transkripsi dan terjemahan audio
Untuk transkripsi audio, saya memberikan berkas audio bahasa Inggris dan menginstruksikan model untuk mentranskripsikan ucapan tersebut serta menerjemahkan transkripsinya ke dalam bahasa Prancis.
Kesimpulan
Dalam tutorial ini, kita membangun tutor bahasa multimodal menggunakan model Phi-4 multimodal, yang memungkinkan pembelajaran bahasa berbasis teks, gambar, dan audio. Kita memanfaatkan kemampuan visi, ucapan, dan teks tingkat lanjut milik Phi-4 untuk menyediakan terjemahan real-time, koreksi tata bahasa, transkripsi ucapan, dan wawasan pembelajaran berbasis gambar. Proyek ini menunjukkan bagaimana AI multimodal dapat meningkatkan pendidikan bahasa dan aksesibilitas.