Tiga ide project Gemma yang menyenangkan

JUN 26, 2024
Ju-yeong Ji Gemma DevRel

Gemma adalah keluarga model terbuka yang dibangun dari riset dan teknologi yang sama dengan yang digunakan untuk membuat model Gemini. Rangkaian model ini mencakup Gemma, CodeGemma, PaliGemma, dan RecurrentGemma. Secara kolektif, model-model ini mampu melakukan berbagai tugas, termasuk pembuatan teks, pelengkapan dan pembuatan kode, berbagai tugas bahasa visi, dan bisa berjalan di berbagai perangkat mulai dari edge, desktop, hingga cloud. Anda dapat melangkah lebih jauh dan menyempurnakan model Gemma agar sesuai dengan kebutuhan spesifik Anda.

Gemma dibuat untuk komunitas terbuka developer dan peneliti yang mendukung inovasi AI. Anda bisa menjelajahi lebih lanjut tentang Gemma dan mengakses panduan memulai di ai.google.dev/gemma

Dalam postingan blog ini, mari kita jelajahi 3 ide project yang menyenangkan dan cara menggunakan model Gemma untuk membuatnya:

  • Menerjemahkan bahasa Korea kuno

  • Curah pendapat desain game

  • Surat untuk Sinterklas


#1. Penerjemah sastra Korea kuno

Deskripsi Project

Alfabet Korea, atau Hangul, telah mengalami perubahan seiring berjalannya waktu, sehingga ada beberapa huruf yang tidak lagi digunakan dalam bahasa Korea modern. Huruf-huruf yang sudah tidak digunakan ini meliputi:

  1. ㆍ (Arae-a): Vokal titik ini merepresentasikan bunyi 'a' pendek.

2. ㆆ (Yeorin-hieut): Diucapkan sebagai 'light h', mirip dengan versi lebih lembut huruf 'h' dalam bahasa Inggris.

3. ㅿ (Bansiot): Merepresentasikan bunyi 'z'.

4. ㆁ (Yet-ieung): Bunyi sengau velar yang mirip dengan 'ng' dalam kata 'sing'.

Bagi penutur asli bahasa Korea, membaca literatur kuno merupakan tantangan tersendiri karena penggunaan huruf yang sekarang tidak digunakan lagi. Hangul Kuno tidak memiliki spasi di antara kata-katanya, yang semakin mempersulit keterbacaan. Sebaliknya, Hangul modern menggunakan spasi, konsisten dengan sebagian besar sistem alfabet.

Kemampuan Gemma memungkinkan lahirnya penerjemah yang membantu memahami dan menjembatani kesenjangan antara bahasa Korea kontemporer dan kuno. SentencePiece berfungsi sebagai fondasi untuk tokenizer Gemma. Berbeda dengan tokenizer konvensional, yang sangat bergantung pada panduan khusus bahasa atau kamus yang telah ditentukan, SentencePiece menjalani pelatihan secara langsung pada data teks mentah. Akibatnya, ia tidak bergantung pada bahasa tertentu dan dapat beradaptasi dengan berbagai bentuk data teks.


Apa yang Anda butuhkan

Software

Untuk menyederhanakan tugas, kami akan mengadopsi struktur berikut untuk menyesuaikan model. Model ini akan menghasilkan teks bahasa Korea kontemporer berdasarkan input pengguna dalam Hangul Kuno.

Korean text means, In the fifteenth year of the reign of King Sejong of Joseon, there was a prime minister outside Honghoemun Gate.
CATATAN: Teks dalam bahasa Korea berarti, Pada tahun ke-15 masa pemerintahan Raja Sejong dari Joseon, ada seorang perdana menteri di luar Gerbang Honghoemun.

Model Instruction-tuned (IT) dilatih dengan pemformat tertentu. Perhatikan bahwa token kontrol ditokenisasi dalam satu token dengan cara berikut:

Instruction-tuned (IT) models being trained with a specific formatter, with control tokens being tokenized in a single token

Untuk pelatihan model, kami akan menggunakan “Hong Gildong jeon”, sebuah novel Korea era Dinasti Joseon.

Untuk menilai kualitas output model, kami akan menggunakan teks dari luar set data pelatihan, yaitu novel klasik Korea “Suk Yeong Nang Ja jeon” oleh penulis yang tidak dikenal.


Inferensi sebelum melakukan penyesuaian

Model ini tidak memiliki kemampuan untuk menerjemahkan Hangul Kuno.

Inference before fine tuning

Penyesuaian LoRA

Setelah penyesuaian, respons mengikuti instruksi, dan menghasilkan teks bahasa Korea kontemporer berdasarkan teks Hangul Kuno.

Model generated contemporary Korean text

Sebagai referensi Anda, silakan lihat teks berikut, yang telah diterjemahkan oleh manusia:

금두꺼비가 품에 드는 게 보였으니 얼마 안 있어 자식을 낳을 것입니다.

하였다. 과연 그 달부터 잉태하여 십삭이 차니

Catatan: Teks dalam bahasa Korea berarti, "Aku melihat kodok emas dalam tangannya, jadi tidak lama lagi dia akan melahirkan seorang anak." Memang, dia mengandung sejak bulan itu dan berusia sepuluh bulan.


Dan inilah output lainnya.

Model generated contemporary Korean text - example 2

Dan terjemahannya oleh manusia seperti ini:

이 때는 사월 초파일이었다. 이날 밤에 오색구름이 집을 두르고 향내 진동하며 선녀 한 쌍이 촉을 들고 들어와 김생더러 말하기를,

Catatan: Teks dalam bahasa Korea berarti, Pada saat itu, tanggal 8 April. Pada malam itu, dengan awan lima warna yang mengelilingi rumah dan aroma dupa yang menggetarkan, sepasang peri datang sambil memegang lilin dan berkata kepada Kim Saeng,


Meskipun tidak sempurna, terjemahan ini menghasilkan draf awal yang cukup baik. Hasilnya luar biasa, mengingat set data yang terbatas pada satu buku. Meningkatkan keragaman sumber data akan meningkatkan kualitas terjemahannya.

Setelah menyesuaikan model, Anda bisa langsung memublikasikannya ke Kaggle dan Hugging Face.

Berikut contohnya.

# Save the finetuned model
gemma.save_to_preset("./old-korean-translator")
 
# Upload the model variant on Kaggle
kaggle_uri = "kaggle://my_kaggle_username/gemma-ko/keras/old-korean-translator"
keras_nlp.upload_preset(kaggle_uri, "./old-korean-translator")

Ide Ekspansi

Untuk mencapai tugas yang serupa, Anda bisa meniru struktur yang sama. Di bawah ini adalah beberapa contohnya:

  • Set data bahasa Inggris Amerika <-> Inggris Britania Raya

Berbagai konsep dan objek sehari-hari memiliki nama yang berbeda tergantung wilayahnya. Misalnya, dalam bahasa Inggris Amerika (AmE), orang menggunakan istilah seperti "elevator," "truck," "cookie," dan "french fries," sedangkan dalam bahasa Inggris Britania Raya (BrE), kata-kata yang bermakna sama adalah "lift," "lorry," "biscuit," dan "chips".

Selain perbedaan kosakata, terdapat juga variasi ejaan. Misalnya, dalam bahasa AmE, kata-kata yang berakhiran "-or" sering kali dieja dengan "-our" dalam bahasa BrE. Contohnya adalah "color" (AmE) dan "colour" (BrE), atau "humor" (AmE) dan "humour" (BrE).

Variasi ejaan lainnya adalah perbedaan "-ize" versus "-ise". Dalam AmE, kata-kata seperti "organize" dan "realize" biasanya dieja dengan huruf "z", sedangkan dalam BrE, ejaan yang biasa digunakan adalah "organise" dan "realise", dengan huruf "s".

Dengan bantuan alat AI seperti Gemma, Anda dapat menciptakan transfer gaya dari satu bahasa Inggris ke bahasa lainnya, yang memungkinkan transisi mulus antara gaya penulisan bahasa Inggris Amerika dan Inggris Britania Raya.

  • Set data Kansai-ben

Di wilayah Kansai, Jepang, terdapat sekumpulan dialek berbeda yang dikenal sebagai Kansai-ben. Dibandingkan dengan bahasa Jepang standar, penutur asli menganggap Kansai-ben lebih merdu dan keras dalam pengucapan serta intonasinya.

Dengan memanfaatkan kemampuan Gemma, Anda bisa menciptakan penerjemah dialek dengan menyiapkan set data Kansai-ben dalam jumlah besar.


#2. Curah pendapat desain game

Deskripsi Project

Dengan Gemma sebagai teman tepercaya, Anda bisa memulai perjalanan untuk membuat game yang menarik. Semuanya dimulai dengan satu kalimat sederhana yang berfungsi sebagai fondasi konsep game Anda. Gemma akan membimbing Anda dengan terampil dalam menyempurnakan konsep game, membuat karakter utama yang rumit, dan menulis cerita utama menarik yang akan memikat para pemain ke dalam dunia game Anda.


Apa yang Anda butuhkan

Software

Dimulai dengan menulis konsep utama, satu kalimat tentang game Anda, seperti di bawah ini:

Example of a one-sentence gameplay pitch

Gemma bisa menambahkan lebih banyak detail berdasarkan pitch Anda.

Input : “Elaborasi game ini dengan konsep utama di bawah ini.\n{pitch}”

Contoh Output :

Example of Gemma output elaborating on the gameplay idea provided in an earlier prompt

Input : “Desain karakter utama”

Contoh Output :

Gemma example output for prompt "Design main characters"

Input : “Desain karakter penjahat”

Contoh Output :

Example of Gemma output for prompt "design villain characters"

Input : “Tulis cerita utama game ini dengan perkenalan, pengembangan, perubahan, dan kesimpulan.”

Contoh Output :

Example of Gemma output for prompt requesting a main story with an introduction, development, turn, and conclusion

Ide Ekspansi

Dengan memodifikasi perintah, Anda bisa mendapatkan pendamping yang serupa untuk hampir semua jenis konten kreatif.

Frasa Pemasaran

Pitch : “Sikat gigi bertenaga uap yang baru”

Input : “Buat frasa pemasaran untuk produk baru di bawah ini.\n{pitch}”

Contoh Output :

Example of Gemma output for prompt "Generate a marketing phrase for the new product below.\n{pitch}""

Ide Penjual Bunga

Pitch : “Alam semesta dan bintang jatuh”

Input : “Buat ide penjual bunga yang terinspirasi dari konsep di bawah ini, beserta saran bunga yang sesuai.\n{pitch}”

Contoh Output :

Example of Gemma output for prompt requesting a florist idea based on a provided prompt

Resep Makanan

Pitch : “Cyberpunk Kraken”

Input : “Buat resep masakan dengan konsep di bawah ini.\n{pitch}”

Contoh Output :

Example of Gemma output for prompt requesting a recipe based on a provided prompt

#3. Keajaiban kotak surat Sinterklas

Deskripsi Project

Metode tradisional pengiriman surat untuk Sinterklas memiliki keterbatasan dan tidak personal. Anak-anak sering kali harus menunggu berminggu-minggu atau bahkan berbulan-bulan untuk mendapatkan balasan, dan surat mereka mungkin tidak sedetail atau seinteraktif yang mereka inginkan.

Dalam project ini, kita akan menggunakan Gemma, yang berjalan di Raspberry Pi, untuk membuat surat-surat ajaib dari Sinterklas menggunakan kekuatan model bahasa besar.


Apa yang Anda butuhkan

Perangkat keras

  • Komputer raspberry Pi 4 dengan RAM 8GB

Software

Pembuatan teks


A. Anda bisa menulis aplikasi C++ Anda sendiri dengan libgemma.

Anda bisa menulis aplikasi C++ Anda sendiri dengan libgemma.

Gunakan perintah di bawah ini untuk menginstruksikan model

Example of a prompt to instruct a Gemma model to write  a letter to Santa

B. Atau gunakan aplikasi c++ sederhana ini untuk melakukan pengujian.

Sebelum membangun, ubah MODEL_PATH yang ditetapkan di dalam kode.

$ g++ santa.cc -I . -I build/_deps/highway-src -I build/_deps/sentencepiece-src build/libgemma.a build/_deps/highway-build/libhwy.a build/_deps/sentencepiece-build/src/libsentencepiece.so -lstdc++ -l

Jalankan

$ LD_LIBRARY_PATH=./build/_deps/sentencepiece-build/src ./a.out

Aplikasi ini akan membaca teks dari letter.txt dan membuat surat dari Sinterklas.

CATATAN: pembuatan teks pada Raspberry Pi mungkin memerlukan waktu.

Image of C++ application in libgemma

Dan inilah hasil akhirnya nanti:

Image of C++ app letter from Santa output

C. Jika Anda lebih suka menggunakan llama.cpp, kami juga menyediakan model GGUF

$ ./main -m models/gemma-2b-it.gguf --repeat-penalty 1.0 -p You are Santa Claus, write a letter back from this kid.\n<start_of_turn>user\nPLACE_THE_CONTEXT_OF_LETTER_HERE<end_of_turn>\n<start_of_turn>model\n
Image of llama.cpp build and output

Penutup

Gemma menawarkan kemungkinan yang tak terbatas. Kami harap beberapa saran ini menginspirasi Anda, dan kami tidak sabar melihat kreasi Anda menjadi nyata.

Kami mengajak Anda untuk bergabung dengan server Discord Komunitas Developer Google. Di sana, Anda bisa membagikan project dan terhubung dengan individu lain yang sepikiran.

Selamat mencoba!