การเข้าถึงโมเดลโดยตรงช่วยให้คุณเลือกเวอร์ชันของ Gemini Nano ที่แอปใช้ได้อย่างชัดเจน การกำหนดค่าระยะการเผยแพร่โมเดลและค่ากำหนดด้านประสิทธิภาพช่วยให้คุณเข้าถึงความสามารถใหม่ๆ ของโมเดลได้เร็วขึ้น หรือเพิ่มประสิทธิภาพแอปสำหรับข้อจำกัดด้านฮาร์ดแวร์ที่เฉพาะเจาะจงได้
ทำความเข้าใจการกำหนดค่าโมเดล
หากต้องการเลือกโมเดลที่เฉพาะเจาะจง คุณต้องกำหนดค่าพารามิเตอร์หลัก 2 รายการภายในคลาส ModelConfig ได้แก่ ระยะการเผยแพร่และค่ากำหนดโมเดล
ระยะการเผยแพร่
ระยะการเผยแพร่ช่วยให้คุณเลือกระหว่างโมเดลที่เสถียรหรือโมเดลเวอร์ชันตัวอย่างได้ ดังนี้
- เสถียร (
ModelReleaseStage.STABLE): เลือกโมเดลเวอร์ชันล่าสุดที่ผ่านการทดสอบอย่างสมบูรณ์และอยู่ในอุปกรณ์ของผู้บริโภค นี่คือการตั้งค่าเริ่มต้น - เวอร์ชันตัวอย่าง (
ModelReleaseStage.PREVIEW): เลือกเวอร์ชันโมเดลล่าสุดในระยะเวอร์ชันตัวอย่าง ขั้นตอนนี้ช่วยให้คุณทดสอบฟีเจอร์เบต้าหรือสถาปัตยกรรมโมเดลที่ใหม่กว่าก่อนที่จะนำไปใช้งานในวงกว้างในขั้นเสถียร
ดูข้อกำหนดเบื้องต้นและวิธีการลงทะเบียนสำหรับเวอร์ชันตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ได้ที่คู่มือเวอร์ชันตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ของ AICore
ค่ากำหนดของโมเดล
ค่ากำหนดโมเดลช่วยให้คุณระบุลักษณะด้านประสิทธิภาพที่สำคัญที่สุดสำหรับ Use Case ของคุณได้
- เต็ม (
ModelPreference.FULL): แนะนำให้ใช้ค่ากำหนดนี้เมื่อให้ความสำคัญกับความแม่นยำและความสามารถเต็มรูปแบบของโมเดลมากกว่าความเร็ว - เร็ว (
ModelPreference.FAST): แนะนำให้ใช้ค่ากำหนดนี้สำหรับแอปที่ไวต่อเวลาในการตอบสนองซึ่งต้องการเวลาตอบสนองน้อยที่สุด
กำหนดค่าโมเดล Generative
หากต้องการใช้ตัวแปรโมเดลที่เฉพาะเจาะจง คุณต้องกำหนด ModelConfig และส่งไปยัง GenerationConfig เมื่อเริ่มต้นไคลเอ็นต์
ตัวอย่างต่อไปนี้แสดงวิธีกำหนดค่าไคลเอ็นต์ให้ใช้โมเดล Fast จากระยะเวอร์ชันตัวอย่าง
Kotlin
// Define the configuration with a specific stage and preference
val previewFastConfig = generationConfig {
modelConfig = modelConfig {
releaseStage = ModelReleaseStage.PREVIEW
preference = ModelPreference.FAST
}
}
// Initialize the GenerativeModel with the configuration
val generativeModel = Generation.getClient(previewFastConfig)
Java
// Define the configuration with a specific stage and preference
GenerationConfig previewFastConfig = new GenerationConfig.Builder()
.setModelConfig(new ModelConfig.Builder()
.setReleaseStage(ModelReleaseStage.PREVIEW)
.setPreference(ModelPreference.FAST)
.build())
.build();
// Initialize the GenerativeModel with the configuration
GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);
ตรวจสอบความพร้อมใช้งานของโมเดล
อุปกรณ์บางรุ่นอาจไม่รองรับการผสมผสานระหว่างระยะการเผยแพร่และค่ากำหนดโมเดลทุกรูปแบบ โมเดลเวอร์ชันตัวอย่างจะพร้อมใช้งานในรายการอุปกรณ์ที่รองรับในคู่มือเวอร์ชันตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ของ AICore เท่านั้น
API ไม่มีเมธอดในการแสดงรายการการกำหนดค่าโมเดลทั้งหมดที่ใช้ได้ล่วงหน้า แต่ให้เริ่มต้นไคลเอ็นต์ด้วยการกำหนดค่าที่ต้องการ แล้วจึงยืนยันสถานะ
- เริ่มต้นไคลเอ็นต์: สร้างอินสแตนซ์
GenerativeModelโดยใช้ModelConfigที่ต้องการ ตรวจสอบสถานะ: เรียกใช้เมธอด
checkStatus()ในอินสแตนซ์เพื่อยืนยันว่าตัวแปรโมเดลที่เฉพาะเจาะจงพร้อมใช้งานในอุปกรณ์
Kotlin
val generativeModel = Generation.getClient(previewFastConfig)
// Verify that the specific preview model is available
val status = generativeModel.checkStatus()
when (status) {
FeatureStatus.UNAVAILABLE -> {
// Specified preview model is not available on this device
}
FeatureStatus.DOWNLOADABLE -> {
// Specified preview model is available for this device, but not downloaded yet.
// Model may be downloaded through the AICore app or by calling generativeModel.download()
}
FeatureStatus.AVAILABLE -> {
// Proceed with inference
}
FeatureStatus.DOWNLOADING -> {
// Specified preview model is downloading
}
}
Java
GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);
// For Java, use GenerativeModelFutures if you prefer ListenableFuture
GenerativeModelFutures generativeModelFutures = GenerativeModelFutures.from(generativeModel);
Futures.addCallback(
generativeModelFutures.checkStatus(),
new FutureCallback<Integer>() {
@Override
public void onSuccess(Integer status) {
if (status == FeatureStatus.AVAILABLE) {
// Proceed with inference
} else if (status == FeatureStatus.DOWNLOADING) {
// Specified preview model is downloading
} else if (status == FeatureStatus.DOWNLOADABLE) {
// Specified preview model is available for this device, but not downloaded yet.
// Call generativeModelFutures.download(callback) or use the AICore app.
} else if (status == FeatureStatus.UNAVAILABLE) {
// Specified preview model is not available on this device
}
}
@Override
public void onFailure(Throwable t) {
// Handle failure
}
},
ContextCompat.getMainExecutor(context));
เพื่อให้มั่นใจว่าสามารถใช้งานร่วมกับการกำหนดค่าที่อาจเกิดขึ้นในอนาคตได้ SDK จึงได้รับการออกแบบมาเพื่อหลีกเลี่ยงการแสดง GenAiException ระหว่างการเริ่มต้นไคลเอ็นต์ โดยอาศัยเมธอด checkStatus() เพียงอย่างเดียวในการยืนยันความพร้อมใช้งาน
แนวทางปฏิบัติแนะนำ
- ใช้กลยุทธ์สำรอง: เนื่องจากไม่มีการรับประกันว่าโมเดลเวอร์ชันตัวอย่างจะพร้อมใช้งานในอุปกรณ์ทั้งหมด โปรดใช้กลยุทธ์สำรองเสมอ หาก
checkStatus()แสดงผลเป็นfalseสำหรับการกำหนดค่าตัวอย่าง แอปของคุณควรเปลี่ยนกลับไปใช้ModelReleaseStage.STABLEและModelPreference.FULLอย่างราบรื่น - ใช้ระยะการเผยแพร่โมเดลสำหรับการพัฒนาและการใช้งานจริง: ใช้ระยะเวอร์ชันตัวอย่างในระหว่างการพัฒนาและการทดสอบภายในเพื่อประเมินการปรับปรุงโดยประมาณของโมเดลที่กำลังจะเกิดขึ้น เปลี่ยนไปใช้เวอร์ชันเสถียรสำหรับรุ่นใช้งานจริงแบบสาธารณะเพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่สอดคล้องกัน
ปัญหาที่ทราบ
- สำหรับอุปกรณ์บางรุ่นที่อยู่ในระยะเวอร์ชันตัวอย่าง อุปกรณ์จะไม่รองรับตัวเลือกหลายรายการในเอาต์พุต และจะแสดงข้อผิดพลาดหากตั้งค่า
candidateCountมากกว่า 1 ดูรายละเอียดเพิ่มเติมได้ที่เอกสารอ้างอิง API - การติดตั้งใช้งานบางรายการไม่รองรับตัวอย่างหลายรายการ ประสิทธิภาพจะช้ากว่าเวอร์ชันที่ใช้งานจริงขั้นสุดท้าย