Hướng dẫn này sẽ giúp bạn bắt đầu sử dụng dịch vụ điều chỉnh API Gemini bằng SDK Python hoặc API REST thông qua curl. Các ví dụ này cho thấy cách điều chỉnh mô hình văn bản đằng sau dịch vụ tạo văn bản API Gemini.
Xem trên ai.google.dev | Dùng thử sổ tay Colab | Xem sổ tay trên GitHub |
Các điểm hạn chế
Trước khi điều chỉnh mô hình, bạn nên lưu ý những hạn chế sau:
Tinh chỉnh tập dữ liệu
Việc tinh chỉnh tập dữ liệu cho Gemini 1.5 Flash có các giới hạn sau:
- Kích thước đầu vào tối đa cho mỗi ví dụ là 40.000 ký tự.
- Kích thước đầu ra tối đa cho mỗi ví dụ là 5.000 ký tự.
- Chỉ hỗ trợ các ví dụ về cặp đầu vào-đầu ra. Không hỗ trợ các cuộc trò chuyện nhiều lượt trò chuyện theo kiểu trò chuyện.
Mô hình được điều chỉnh
Mô hình được điều chỉnh có các hạn chế sau:
- Giới hạn đầu vào của mô hình Gemini 1.5 Flash đã điều chỉnh là 40.000 ký tự.
- Chế độ JSON không được hỗ trợ với các mô hình đã điều chỉnh.
- Chỉ hỗ trợ phương thức nhập văn bản.
Trước khi bắt đầu: Thiết lập dự án và khoá API
Trước khi gọi API Gemini, bạn cần thiết lập dự án và định cấu hình khoá API.
Liệt kê các mô hình đã điều chỉnh
Bạn có thể kiểm tra các mô hình đã điều chỉnh hiện có bằng phương thức tunedModels.list
.
# Sending a page_size is optional
curl -X GET https://generativelanguage.googleapis.com/v1beta/tunedModels?page_size=5 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${access_token}" \
-H "x-goog-user-project: ${project_id}" > tuned_models.json
jq .tunedModels[].name < tuned_models.json
# Send the nextPageToken to get the next page.
page_token=$(jq .nextPageToken < tuned_models.json | tr -d '"')
if [[ "$page_token" != "null"" ]]; then
curl -X GET https://generativelanguage.googleapis.com/v1beta/tunedModels?page_size=5\&page_token=${page_token}?key=$GOOGLE_API_KEY \
-H "Content-Type: application/json" > tuned_models2.json
jq .tunedModels[].name < tuned_models.json
fi
Tạo mô hình được điều chỉnh
Để tạo một mô hình được điều chỉnh, bạn cần truyền tập dữ liệu của mình vào mô hình trong phương thức tunedModels.create
.
Trong ví dụ này, bạn sẽ điều chỉnh một mô hình để tạo số tiếp theo trong trình tự. Ví dụ: nếu dữ liệu đầu vào là 1
, thì mô hình sẽ xuất ra 2
. Nếu giá trị đầu vào là one hundred
, thì kết quả sẽ là one hundred one
.
curl -X POST "https://generativelanguage.googleapis.com/v1beta/tunedModels?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '
{
"display_name": "number generator model",
"base_model": "models/gemini-1.5-flash-001-tuning",
"tuning_task": {
"hyperparameters": {
"batch_size": 2,
"learning_rate": 0.001,
"epoch_count":5,
},
"training_data": {
"examples": {
"examples": [
{
"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",
}
]
}
}
}
}' | tee tunemodel.json
# Check the operation for status updates during training.
# Note: you can only check the operation on v1/
operation=$(cat tunemodel.json | jq ".name" | tr -d '"')
tuning_done=false
while [[ "$tuning_done" != "true" ]];
do
sleep 5
curl -X GET "https://generativelanguage.googleapis.com/v1/${operation}?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
2> /dev/null > tuning_operation.json
complete=$(jq .metadata.completedPercent < tuning_operation.json)
tput cuu1
tput el
echo "Tuning...${complete}%"
tuning_done=$(jq .done < tuning_operation.json)
done
# Or get the TunedModel and check it's state. The model is ready to use if the state is active.
modelname=$(cat tunemodel.json | jq ".metadata.tunedModel" | tr -d '"')
curl -X GET https://generativelanguage.googleapis.com/v1beta/${modelname}?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' > tuned_model.json
cat tuned_model.json | jq ".state"
Giá trị tối ưu cho số lượng epoch, kích thước lô và tốc độ học phụ thuộc vào tập dữ liệu và các quy tắc ràng buộc khác của trường hợp sử dụng. Để tìm hiểu thêm về các giá trị này, hãy xem phần Cài đặt tinh chỉnh nâng cao và Thông số siêu dữ liệu.
Mô hình đã điều chỉnh của bạn sẽ được thêm ngay vào danh sách mô hình đã điều chỉnh, nhưng trạng thái của mô hình này sẽ được đặt thành "đang tạo" trong khi mô hình được điều chỉnh.
Thử mô hình
Bạn có thể sử dụng phương thức tunedModels.generateContent
và chỉ định tên của mô hình đã điều chỉnh để kiểm tra hiệu suất của mô hình đó.
curl -X POST https://generativelanguage.googleapis.com/v1beta/$modelname:generateContent?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-d '{
"contents": [{
"parts": [{
"text": "LXIII"
}]
}]
}' 2> /dev/null
Xoá mô hình
Bạn có thể dọn dẹp danh sách mô hình đã điều chỉnh bằng cách xoá những mô hình bạn không cần nữa.
Sử dụng phương thức tunedModels.delete
để xoá một mô hình. Nếu đã huỷ bất kỳ công việc điều chỉnh nào, bạn nên xoá các công việc đó vì hiệu suất của chúng có thể không thể dự đoán được.
curl -X DELETE https://generativelanguage.googleapis.com/v1beta/${modelname}?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json'