![]() |
![]() |
![]() |
Bu not defterinde, Python istemci kitaplığı. Buradan, videonuzun Gemini API'nin metin oluşturma hizmetinin arkasındaki metin modeli.
Başlamadan önce: Projenizi ve API anahtarınızı oluşturun
Gemini API'yi çağırmadan önce projenizi ayarlamanız ve API anahtarınız.
Kurulum
Kimlik doğrulamayı ayarlayın
Gemini API, modelleri kendi verilerinize göre ayarlamanıza olanak tanır. Bu sizin verileriniz ve bu nedenle, API Anahtarlarının sağlayabileceğinden daha sıkı erişim denetimlerine ihtiyaç vardır.
Bu eğiticiyi çalıştırmadan önce uygulamanızda OAuth'u kurmanız gerekir: inceleyebilirsiniz.
Colab'de kurulumu yapmanın en kolay yolu
client_secret.json
dosyasını Colab'in "Secrets manager"a kaydedin (şuradaki anahtar simgesinin altında:
sol panelde) CLIENT_SECRET
gizli adıyla değiştirin.
Bu gcloud komutu, client_secret.json
dosyasını kimlik bilgilerine dönüştürür.
hizmetle kimlik doğrulaması yapmak için kullanılabilir.
import os
if 'COLAB_RELEASE_TAG' in os.environ:
from google.colab import userdata
import pathlib
pathlib.Path('client_secret.json').write_text(userdata.get('CLIENT_SECRET'))
# Use `--no-browser` in colab
!gcloud auth application-default login --no-browser --client-id-file client_secret.json --scopes='https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/generative-language.tuning'
else:
!gcloud auth application-default login --client-id-file client_secret.json --scopes='https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/generative-language.tuning'
İstemci kitaplığını yükleme
pip install -q google-generativeai
Kitaplıkları içe aktar
import google.generativeai as genai
Hassaslaştırılmış mevcut modellerinizi genai.list_tuned_model
ile kontrol edebilirsiniz
yöntemidir.
for i, m in zip(range(5), genai.list_tuned_models()):
print(m.name)
tunedModels/my-model-8527 tunedModels/my-model-7092 tunedModels/my-model-2778 tunedModels/my-model-1298 tunedModels/my-model-3883
Hassaslaştırılmış model oluşturun
Hassaslaştırılmış bir model oluşturmak için veri kümenizi modele
genai.create_tuned_model
yöntemini çağırın. Bunu, tablodaki anahtar kelimeleri
veya bir dosyadan veri çerçevesine aktarılarak oluşturulan dosyadaki giriş ve çıkış değerlerinin
yöntemini de kullanabilirsiniz.
Bu örnekte, bir sonraki sayıyı oluşturmak için bir modeli
tıklayın. Örneğin, giriş 1
ise model 2
çıktısı vermelidir. Öğe
giriş one hundred
, çıkış one hundred one
olmalıdır.
base_model = [
m for m in genai.list_models()
if "createTunedModel" in m.supported_generation_methods][0]
base_model
Model(name='models/gemini-1.0-pro-001', base_model_id='', version='001', display_name='Gemini 1.0 Pro', description=('The best model for scaling across a wide range of tasks. This is a stable ' 'model that supports tuning.'), input_token_limit=30720, output_token_limit=2048, supported_generation_methods=['generateContent', 'countTokens', 'createTunedModel'], temperature=0.9, top_p=1.0, top_k=1)
import random
name = f'generate-num-{random.randint(0,10000)}'
operation = genai.create_tuned_model(
# You can use a tuned model here too. Set `source_model="tunedModels/..."`
source_model=base_model.name,
training_data=[
{
'text_input': '1',
'output': '2',
},{
'text_input': '3',
'output': '4',
},{
'text_input': '-3',
'output': '-2',
},{
'text_input': 'twenty two',
'output': 'twenty three',
},{
'text_input': 'two hundred',
'output': 'two hundred one',
},{
'text_input': 'ninety nine',
'output': 'one hundred',
},{
'text_input': '8',
'output': '9',
},{
'text_input': '-98',
'output': '-97',
},{
'text_input': '1,000',
'output': '1,001',
},{
'text_input': '10,100,000',
'output': '10,100,001',
},{
'text_input': 'thirteen',
'output': 'fourteen',
},{
'text_input': 'eighty',
'output': 'eighty one',
},{
'text_input': 'one',
'output': 'two',
},{
'text_input': 'three',
'output': 'four',
},{
'text_input': 'seven',
'output': 'eight',
}
],
id = name,
epoch_count = 100,
batch_size=4,
learning_rate=0.001,
)
Hassaslaştırılmış modeliniz, hassaslaştırılmış modeller listesine hemen eklenir, ancak durum "oluşturuluyor" olarak ayarlanmıştır. otomatik olarak devreye girer.
model = genai.get_tuned_model(f'tunedModels/{name}')
model
TunedModel(name='tunedModels/generate-num-2946', source_model='models/gemini-1.0-pro-001', base_model='models/gemini-1.0-pro-001', display_name='', description='', temperature=0.9, top_p=1.0, top_k=1, state=<State.CREATING: 1>, create_time=datetime.datetime(2024, 2, 21, 20, 4, 16, 448050, tzinfo=datetime.timezone.utc), update_time=datetime.datetime(2024, 2, 21, 20, 4, 16, 448050, tzinfo=datetime.timezone.utc), tuning_task=TuningTask(start_time=datetime.datetime(2024, 2, 21, 20, 4, 16, 890698, tzinfo=datetime.timezone.utc), complete_time=None, snapshots=[], hyperparameters=Hyperparameters(epoch_count=100, batch_size=4, learning_rate=0.001)))
model.state
<State.CREATING: 1>
Ayarlamanın ilerleme durumunu kontrol etme
Eyaleti kontrol etmek için metadata
öğesini kullanın:
operation.metadata
total_steps: 375 tuned_model: "tunedModels/generate-num-2946"
operation.result()
aracını kullanarak eğitimin tamamlanmasını bekleyin veya
operation.wait_bar()
import time
for status in operation.wait_bar():
time.sleep(30)
0%| | 0/375 [00:00<?, ?it/s]
Ayarlama işinizi cancel()
yöntemini kullanarak dilediğiniz zaman iptal edebilirsiniz. Açıklamayı kaldır
aşağıdaki satırı tıklayın ve kod hücresini çalıştırarak işinizi tamamlanmadan iptal edin.
# operation.cancel()
Ayarlama tamamlandıktan sonra kayıp eğrisini ince ayardan görüntüleyebilirsiniz sonuç. Kayıp eğri modelin tahminlerinin ideal çıkışlardan ne kadar saptığını gösterir.
import pandas as pd
import seaborn as sns
model = operation.result()
snapshots = pd.DataFrame(model.tuning_task.snapshots)
sns.lineplot(data=snapshots, x = 'epoch', y='mean_loss')
<Axes: xlabel='epoch', ylabel='mean_loss'>
Modelinizi değerlendirme
genai.generate_text
yöntemini kullanarak modelinizin adını belirtebilirsiniz
test edin.
model = genai.GenerativeModel(model_name=f'tunedModels/{name}')
result = model.generate_content('55')
result.text
'56'
result = model.generate_content('123455')
result.text
'123456'
result = model.generate_content('four')
result.text
'five'
result = model.generate_content('quatre') # French 4
result.text # French 5 is "cinq"
'cinq'
result = model.generate_content('III') # Roman numeral 3
result.text # Roman numeral 4 is IV
'IV'
result = model.generate_content('七') # Japanese 7
result.text # Japanese 8 is 八!
'八'
Fazla sayıda örnek olmasına rağmen bu süreç pek de başarılı oldu gibi görünüyor. "sonraki" nispeten basit bir kavramdır; daha fazla bilgi için bu rehberine performansı artırmaya yardımcı olur.
Açıklamayı güncelle
Hassaslaştırılmış modelinizin açıklamasını istediğiniz zaman
genai.update_tuned_model
yöntemini çağırın.
genai.update_tuned_model(f'tunedModels/{name}', {"description":"This is my model."});
model = genai.get_tuned_model(f'tunedModels/{name}')
model.description
'This is my model.'
Modeli silin
Artık ihtiyaç duymadığınız modelleri silerek hassaslaştırılmış model listenizi temizleyebilirsiniz.
Bir modeli silmek için genai.delete_tuned_model
yöntemini kullanın. Herhangi bir
ince ayar yapan işlerin performansını artırmak,
öngörülemez.
genai.delete_tuned_model(f'tunedModels/{name}')
Model artık mevcut değil:
try:
m = genai.get_tuned_model(f'tunedModels/{name}')
print(m)
except Exception as e:
print(f"{type(e)}: {e}")
<class 'google.api_core.exceptions.NotFound'>: 404 Tuned model tunedModels/generate-num-2946 does not exist.