E-postalar da dahil olmak üzere müşteri sorgularını ele almak, ancak kısa sürede bunaltıcı da olabilir. Biraz çaba göstererek Gemma gibi yapay zeka (AI) modelleri bu işi kolaylaştırabilir.
Her işletme, e-posta gibi sorguları biraz farklı şekilde ele alır. Bu nedenle, üretken yapay zeka gibi teknolojileri işletmenizin ihtiyaçlarına uyarlayabilmek önemlidir. Bu proje, sipariş çıkarma sorununu ele alır. e-postalardaki bilgileri yapılandırılmış veri olarak kullanır. Böylece, bir sipariş işleme sistemine eklendi. 10 ila 20 sorgu örneği kullanarak bir Gemma modelini, kendisinden aldığınız e-postaları işleyecek şekilde ayarlayabilirsiniz. ve mevcut işletme sistemlerinize entegre edilerek müşterilere hızlı yanıt vermenize yardımcı olur. Bu proje, Gemma modellerinden işletmeniz için değer elde etmek üzere genişletebileceğiniz ve uyarlayabileceğiniz bir yapay zeka uygulama kalıbı olarak tasarlanmıştır.
Projenin geliştiricilerinden alınan bilgiler de dahil olmak üzere projeye ve nasıl genişletileceğine dair genel bir bakış için Google Yapay Zeka ile Oluştur'da İşletme E-postaları İçin Yapay Zeka Asistanı videosuna göz atın. Bu projenin kodunu şuradan da inceleyebilirsiniz: Gemma Cookbook kod deposu. Aksi takdirde, aşağıdaki adımları uygulayarak projeyi genişletmeye başlayabilirsiniz: bakın.
Genel Bakış
Bu eğitimde, Gemma, Python ve Flask ile oluşturulmuş bir iş e-postası asistanı uygulamasının kurulumu, çalıştırılması ve genişletilmesi adım adım açıklanmaktadır. Proje, ihtiyaçlarınıza uyacak şekilde değiştirebileceğiniz temel bir web kullanıcı arayüzü sağlar. Uygulama, müşteri e-postalarından verileri hayali bir fırın için bir yapıya ayıklayacak şekilde tasarlanmıştır. Bu uygulama kalıbını tüm işletmeler için kullanabilirsiniz kullanılan bir görevdir.
Şekil 1. Fırınla ilgili e-posta sorgularını işleme koymak için proje kullanıcı arayüzü
Donanım gereksinimleri
Bu ayarlama işlemini, grafik işlem birimi (GPU) veya Tensor işleme birimi (TPU) ve ayarlama verilerini de göz önünde bulundurabilirsiniz. Bu projede ayar yapılandırmasını çalıştırmak için yaklaşık 16 GB GPU belleğine, yaklaşık olarak aynı miktarda normal RAM'e ve en az 50 GB disk alanına ihtiyacınız vardır.
Bu eğitimdeki Gemma model ayarlama bölümünü, T4 GPU çalışma zamanına sahip bir Colab ortamı kullanarak çalıştırabilirsiniz. Bu projeyi bir Google Cloud sanal makine örneğinde oluşturuyorsanız örneği aşağıdaki gereksinimlere göre yapılandırın:
- GPU donanımı: Bu projeyi çalıştırmak için NVIDIA T4 gerekir (NVIDIA L4 veya daha yeni sürümler önerilir)
- İşletim Sistemi: Linux'ta Derin Öğrenme seçeneğini belirleyin. özel olarak CUDA 12.3 M124 yüklü Derin Öğrenme Sanal Makinesi (önceden yüklü olarak) GPU yazılım sürücüleridir.
- Önyükleme diski boyutu: Uygulamanız için en az 50 GB disk alanı sağlayın veriler, modeller ve destekleyici yazılımlar.
Proje ayarlama
Bu talimatlar projeyi geliştirmeye hazır hale getirirken size yol gösterir bahsedeceğiz. Genel kurulum adımları, ön koşul yazılımını yüklemek, projeyi kod deposundan klonlama ve birkaç ortam ayarlama değişkenleri, Python kitaplıklarını yükleme ve web uygulamasını test etme.
Yükleme ve yapılandırma
Bu projede, paketleri yönetmek için Python 3 ve Sanal Ortamlar (venv
) kullanılır
ve uygulamayı çalıştırın. Aşağıdaki yükleme talimatları bir Linux içindir
anlamına gelir.
Gerekli yazılımı yüklemek için:
Python için Python 3 ve
venv
sanal ortam paketini yükleyin:sudo apt update sudo apt install git pip python3-venv
Projeyi klonlama
Proje kodunu geliştirme bilgisayarınıza indirin. İhtiyacınız olanlar değerini almak için git kaynak kontrolü yazılımı kaynak kodundan yararlanabilirsiniz.
Proje kodunu indirmek için:
Aşağıdaki komutu kullanarak git deposunu klonlayın:
git clone https://github.com/google-gemini/gemma-cookbook.git
İsteğe bağlı olarak, yerel git deponuzu seyrek ödeme yöntemini kullanacak şekilde yapılandırın, Böylece, yalnızca projeye ait dosyalara sahip olursunuz:
cd gemma-cookbook/ git sparse-checkout set Demos/business-email-assistant/ git sparse-checkout init --cone
Python kitaplıklarını yükleme
Python paketlerini ve bağımlılıklarını yönetmek için venv
Python sanal ortamı etkinleştirilmiş şekilde Python kitaplıklarını yükleyin.
pip
ile Python kitaplıklarını yüklemeden önce Python sanal ortamı
gerekir. Python sanal ortamlarını kullanma hakkında daha fazla bilgi için
Python venv belgelerine göz atın.
Python kitaplıklarını yüklemek için:
Terminal penceresinde
business-email-assistant
dizinine gidin:cd Demos/business-email-assistant/
Bu proje için Python sanal ortamını (venv) yapılandırın ve etkinleştirin:
python3 -m venv venv source venv/bin/activate
setup_python
komut dosyasını kullanarak bu proje için gerekli Python kitaplıklarını yükleyin:./setup_python.sh
Ortam değişkenlerini ayarlama
Bu projenin çalıştırılması için Kaggle kullanıcı adı ve Kaggle API jetonu da dahil olmak üzere birkaç ortam değişkeni gerekir. Bir Kaggle'ınız olmalı
hesabı ziyaret etmeniz ve Gemma modellerini indirebilmek için erişim isteğinde bulunmanız gerekir. Bu proje için Kaggle kullanıcı adınızı ve Kaggle API jetonunuzu, sırasıyla web uygulaması ve ayarlama programı tarafından okunan iki .env
dosyaya eklersiniz.
Ortam değişkenlerini ayarlamak için:
- Kaggle dokümanlarında yer alan talimatları uygulayarak Kaggle kullanıcı adınızı ve jeton anahtarınızı alın.
- Gemma Kurulumu sayfasındaki Gemma'ya erişim talimatlarını uygulayarak Gemma modeline erişin.
- Proje için ortam değişkeni dosyaları oluşturmak üzere
Proje klonunuzdaki her konumda
.env
metin dosyası var:email-processing-webapp/.env model-tuning/.env
.env
metin dosyalarını oluşturduktan sonra, her ikisine de aşağıdaki ayarları ekleyin dosyalar:KAGGLE_USERNAME=<YOUR_KAGGLE_USERNAME_HERE> KAGGLE_KEY=<YOUR_KAGGLE_KEY_HERE>
Uygulamayı çalıştırma ve test etme
Projenin kurulumunu ve yapılandırmasını tamamladıktan sonra web uygulamasını kullanarak uygulamayı doğru şekilde yapılandırdığınızı onaylayın. Şunları yapmalısınız: projeyi kendi kullanımınız için düzenlemeden önce bunu bir temel kontrolü olarak yapın.
Projeyi çalıştırmak ve test etmek için:
Terminal penceresinde
email-processing-webapp
dizinine gidin:cd business-email-assistant/email-processing-webapp/
run_app
komut dosyasını kullanarak uygulamayı çalıştırın:./run_app.sh
Web uygulamasını başlattıktan sonra, program kodunda göz atıp test edebilirsiniz. Bu adres genellikle şu şekildedir:
http://127.0.0.1:5000/
Web arayüzünde, ilk girişin altındaki Get data (Verileri al) düğmesine basın alanını kullanın.
Uygulamayı çalıştırdıktan sonra modelin ilk yanıtı daha uzun sürer çünkü ilk nesil çalıştırmada başlatma adımlarını tamamlamalıdır. Halihazırda çalışan bir web uygulamasında sonraki istem istekleri ve oluşturma tamamlanabilmesini sağlar.
Başvuruyu uzatma
Uygulamayı çalıştırdıktan sonra, kullanıcı arayüzünü ve iş mantığını değiştirerek sizinle veya işletmenizle alakalı görevlerde çalışacak şekilde genişletebilirsiniz. Ayrıca, uygulamanın üretken yapay zeka modeline gönderdiği istemin bileşenlerini değiştirerek uygulama kodunu kullanarak Gemma modelinin davranışını değiştirebilirsiniz.
Uygulama, giriş verileriyle birlikte modele talimatlar sağlar kullanıcıya tam bir model istemi gösterir. Modelin davranışını değiştirmek için bu talimatları değiştirebilirsiniz (ör. parametrelerin adlarını ve oluşturulacak JSON'un yapısını belirtme). Anahtar kelimelerin davranışını değiştirmenin daha basit bir modeliniz için ek talimatlar veya rehberlik sağlamak oluşturabilirsiniz. Örneğin, oluşturulan yanıtların Markdown biçimlendirmesi.
İstem talimatlarını değiştirmek için:
- Geliştirme projesinde
business-email-assistant/email-processing-webapp/app.py
kod dosyasını açın. app.py
kodunda,get_prompt():
işlevi:def get_prompt(): return """ Extract the relevant details of this request and return them in JSON code, with no additional markdown formatting:\n"""
Bu örnekte, "ek markdown biçimlendirmesi olmadan" ifadesi eklenmiştir değerini bakın.
Ek istem talimatı sağlamak, oluşturulan arama sonucunu önemli ölçüde ve uygulanması çok daha az çaba gerektirir. Bunu denemelisiniz: yöntemini çağırın. Ancak Gemma modelinin davranışını değiştirmek için istem talimatlarını kullanmanın da sınırları vardır. Özellikle, modelin toplam giriş jetonu sınırı. Gemma 2 için 8.192 jeton, ayrıntılı istem talimatlarını dengelemenizi gerektirir. verdiğiniz yeni verilerin boyutuyla uyumlu olduğundan emin olun.
Modeli ayarlama
Gemma modelinde ince ayar yapmak, belirli görevler için daha güvenilir yanıtlar almanın önerilen yoludur. Özellikle, modelin belirli bir yapıda JSON oluşturmasını istiyorsanız (özellikle adlandırılmış parametreler dahil) modeli bu davranış için ayarlamanız gerekir. Modelin tamamlamasını istediğiniz göreve bağlı olarak 10 ila 20 örnekle temel işlevselliğe ulaşabilirsiniz. Eğitimin bu bölümünde, belirli bir görev için bir Gemma modelinde hassas ayarlamayı nasıl ayarlayacağınız ve çalıştıracağınız açıklanmaktadır.
Aşağıdaki talimatlarda, bir sanal makine ortamı olabilir. Ancak bu ayar işlemini ilişkili Colab not defteri gerekiyor.
Donanım gereksinimleri
İnce ayar için gereken bilgi işlem gereksinimleri, projenin geri kalanı için gereken donanım gereksinimleriyle aynıdır. Şunları yapabilirsiniz: ince ayar işlemini bir Colab ortamında T4 GPU çalışma zamanı ile çalıştırmanızgerekir giriş jetonlarını 256 ve grup boyutunu 1 ile sınırlandırırsınız.
Verileri hazırlama
Bir Gemma modelini ayarlamaya başlamadan önce verileri ayarlamaya hazırlamanız gerekir. Zaman bir modeli belirli bir görev için ayarlıyorsanız, bir dizi istek ve yanıt örnekleri. Bu örneklerde istek metni, herhangi bir talimatları ve beklenen yanıt metnini içerir. Başlamak için yaklaşık 10 örnek içeren bir veri kümesi hazırlamanız gerekir. Bu örnekler bir sitenin ve ideal yanıtları almaktır. İsteklerin ve cevaplar tekrarlanmaz çünkü bu, modellerin yanıtlarının ve isteklerdeki değişimlere uygun şekilde düzenlenmemelidir. Modeli yapılandırılmış veri biçimi oluşturacak şekilde ayarlıyorsanız sağlanan tüm yanıtların kesinlikle istediğiniz veri çıkış biçimine uyduğundan emin olun. Aşağıdakiler tablosunda şu kod örneğin veri kümesinden birkaç örnek kayıt gösterilmektedir:
İstek | Yanıt |
---|---|
Merhaba Hint Pastanesi,\n otuz bundi ladosu hazır mıydı? Vanilyalı krema ve krema da satıyor musunuz? çikolatalı pastalar. 6 inç boyutunda bir cihazı arıyorum | { "type": "inquiry", "öğeler": [ { "name": "pendas", "quantity": 10 }, { "name": "bundi ladoos", "quantity": 30 }, { "name": "kek", "filling": null, "krema": "vanilya", "aroma": "çikolata", "size": "6 inç" } ] } |
İşletmenizi Google Haritalar'da gördüm. Jellabi ve gulab jamun satıyor musunuz? | { "type": "inquiry", "items": [ { "name": "jellabi", "quantity": null }, { "name": "gulab jamun", "quantity": null } ] } |
Tablo 1. Fırın e-posta veri ayıklayıcısı için ayar veri kümesinin kısmi listesi.
Veri biçimi ve yükleme
Ayarlama verilerinizi uygun bulduğunuz herhangi bir biçimde saklayabilirsiniz. Örneğin,
ve veritabanı kayıtlarını, JSON dosyalarını, CSV dosyalarını veya düz metin dosyalarını
kayıtların Python koduyla alınması anlamına gelir. Bu proje, data
dizininden JSON dosyalarını bir sözlük nesnesi dizisine okur.
Bu örnekte, dönen programda ayar veri kümesi, prepare_tuning_dataset()
işlevi kullanılarak model-tuning/main.py
modülüne yüklenir:
def prepare_tuning_dataset():
# collect data from JSON files
prompt_data = read_json_files_to_dicts("./data")
...
Daha önce de belirtildiği gibi, istekleri ilişkili yanıtlarla birlikte alıp ayar kaydı olarak kullanılan bir metin dizesi halinde bir araya getirebildiğiniz sürece veri kümesini uygun bir biçimde saklayabilirsiniz.
Ayarlama kayıtlarını derleme
Program, gerçek ayarlama sürecinde her talep ve yanıtı derlemektedir.
tek bir dizeye dönüştürmenizi sağlar.
tıklayın. Ardından ayarlama programı, model tarafından kullanılmak üzere dizeyi dize öğelerine ayırır. Ayarlama kaydını bir araya getirme kodunu model-tuning/main.py
modülü prepare_tuning_dataset()
işlevinde aşağıdaki gibi görebilirsiniz:
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
Bu işlev, verileri giriş olarak alır ve talimat ile yanıt arasına satır sonu ekleyerek biçimlendirir.
Model ağırlıkları oluşturma
Ayarlama verileri hazır ve yüklü olduğunda ayarlama programını çalıştırabilirsiniz. Bu örnek uygulama için ayarlama işleminde Keras NLP kullanılır. kullanarak modelinizi Düşük Sıralama Uyarlaması veya LoRA tekniği, ağırlıklarını da kullanabilirsiniz. Tam hassasiyet ayarına kıyasla LoRA'yı kullanmak sistemdeki değişiklikleri tahmin etmesi nedeniyle, bellek verimliliğinden ağırlıklandırmasına yardımcı olur. Ardından, modelin davranışını değiştirmek için bu yaklaşık ağırlıkları mevcut model ağırlıklarının üzerine yerleştirebilirsiniz.
Ayarlama çalıştırmasını yapmak ve yeni ağırlıkları hesaplamak için:
Bir terminal penceresinde
model-tuning/
dizinine gidin.cd business-email-assistant/model-tuning/
tune_model
komut dosyasını kullanarak ayarlama işlemini çalıştırın:./tune_model.sh
Ayarlama işlemi, kullanılabilir bilgi işlem kaynaklarınıza bağlı olarak birkaç dakika sürer. Ayarlama programı başarıyla tamamlandığında model-tuning/weights
dizinine aşağıdaki biçime sahip yeni *.h5
ağırlık dosyaları yazar:
gemma2-2b_inquiry_tuned_4_epoch##.lora.h5
Sorun giderme
Ayarlama işlemi başarıyla tamamlanmazsa bunun iki olası nedeni vardır:
- Bellek yetersiz veya kaynaklar tükendi: Bu hatalar, ayarlama işlemi mevcut GPU belleğini veya CPU belleğini aşan bellek istediğinde ortaya çıkar. İnce ayar sırasında web uygulamasını çalıştırmadığınızdan emin olun
çalışıyor. 16 GB GPU belleği olan bir cihazda ince ayar yapıyorsanız
token_limit
öğesinin 256 vebatch_size
olarak ayarlandığından emin olun 1 olarak ayarlanmış olmalıdır. - JAX ile uyumlu olmayan veya yüklü olmayan GPU sürücüleri: Çevirme işlemi için, bilgi işlem cihazında yüklü donanım sürücülerinin olması gerekir. şunun sürümüyle uyumlu: JAX kitaplıkları. Daha fazla bilgi için JAX kurulumu belgelerinden faydalanabilirsiniz.
Ayarlanmış modeli dağıtma
Ayarlama işlemi, ayarlama verilerine ve ayarlama uygulamasında ayarlanan toplam epoch sayısına göre birden fazla ağırlık oluşturur. Varsayılan olarak, ince ayar programı, her ayarlama dönemi için bir tane olmak üzere 3 model ağırlık dosyası oluşturur. Art arda gelen her ayarlama dönemi, ayarlama verilerinin sonuçlarını daha doğru şekilde yeniden üreten ağırlıklar oluşturur. Ayarlama sürecinin terminal çıkışında her bir dönemin doğruluk oranlarını aşağıdaki gibi görebilirsiniz:
...
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
Doğruluk oranının nispeten yüksek olmasını isteseniz de (örneğin, 0, 80 civarında) oranın çok yüksek veya 1, 00'a çok yakın olmasını istersiniz çünkü bu, ayarlama verilerini aşmaya yaklaştı. Böyle bir durumda, modelin, ayarlama örneklerini inceleyeceğiz. Varsayılan olarak dağıtım komut dosyası, genellikle 0,80 civarında bir doğruluk oranına sahip olan 3. dönem ağırlıklarını seçer.
Oluşturulan ağırlıkları web uygulamasına dağıtmak için:
Bir terminal penceresinde
model-tuning
dizinine gidin:cd business-email-assistant/model-tuning/
deploy_weights
komut dosyasını kullanarak ayarlama işlemini çalıştırın:./deploy_weights.sh
Bu komut dosyasını çalıştırdıktan sonra*.h5
email-processing-webapp/weights/
dizini.
Yeni modeli test etme
Yeni ağırlıkları uygulamaya dağıttıktan sonra sıra model üzerinde çalışıyor. Bunu, web uygulamasını yeniden çalıştırıp yanıt oluşturarak yapabilirsiniz.
Projeyi çalıştırmak ve test etmek için:
Terminal penceresinde
email-processing-webapp
dizinine gidin:cd business-email-assistant/email-processing-webapp/
run_app
komut dosyasını kullanarak uygulamayı çalıştırın:./run_app.sh
Web uygulamasını başlattıktan sonra program kodunda göz atıp test edebilirsiniz. Genellikle bu adres şöyledir:
http://127.0.0.1:5000/
Web arayüzünde, ilk girişin altındaki Get data (Verileri al) düğmesine basın alanını kullanın.
Artık bir Gemma modelini ayarlayıp bir uygulamaya dağıttınız. Şununla deneme yap: ve hassaslaştırılmış modelin üretim sınırlarını belirlemeye çalışmak üzerine konuşacağız. Modelin iyi performans göstermediği senaryolar görürseniz Bu isteklerden bazılarını, ince ayar örnek verileri listenize ekleyebilirsiniz. ekleyerek ve ideal bir yanıt sunarak. Ardından, ayarlama işlemini yeniden çalıştırın, yeni ağırlıkları yeniden dağıtın ve çıktıyı test edin.
Ek kaynaklar
Bu proje hakkında daha fazla bilgi için Gemma Cookbook kod deposuna göz atın. Uygulamayı geliştirme konusunda yardıma ihtiyacınız varsa veya diğer geliştiriciler için Google Developers Topluluğu Discord sunucu. Build with Google AI ile oluşturulan daha fazla proje için video oynatma listesine göz atın.