डायरेक्ट मॉडल ऐक्सेस की मदद से, Gemini Nano का वह वर्शन चुना जा सकता है जिसका इस्तेमाल आपका ऐप्लिकेशन करता है. मॉडल के रिलीज़ होने की स्टेज और परफ़ॉर्मेंस की प्राथमिकता को कॉन्फ़िगर करके, मॉडल की नई सुविधाओं को पहले ऐक्सेस किया जा सकता है. इसके अलावा, हार्डवेयर की कुछ सीमाओं के लिए अपने ऐप्लिकेशन को ऑप्टिमाइज़ किया जा सकता है.
मॉडल कॉन्फ़िगरेशन को समझना
कोई मॉडल चुनने के लिए, आपको ModelConfig क्लास में दो मुख्य पैरामीटर कॉन्फ़िगर करने होंगे: रिलीज़ स्टेज और मॉडल की प्राथमिकता.
रिलीज़ के चरण
रिलीज़ स्टेज की मदद से, स्टेबल या झलक वाले मॉडल में से किसी एक को चुना जा सकता है:
- स्टेबल (
ModelReleaseStage.STABLE): इससे मॉडल का वह नया वर्शन चुना जाता है जिसकी पूरी तरह से जांच की गई है और जो उपभोक्ता के डिवाइसों पर उपलब्ध है. यह डिफ़ॉल्ट सेटिंग है. - Preview (
ModelReleaseStage.PREVIEW): इससे झलक वाले चरण में, मॉडल का सबसे नया वर्शन चुना जाता है. इस स्टेज में, बीटा वर्शन वाली सुविधाओं या नए मॉडल आर्किटेक्चर को टेस्ट किया जा सकता है. ऐसा उन्हें स्टेबल स्टेज में बड़े पैमाने पर डिप्लॉय करने से पहले किया जाता है.
डेवलपर के लिए झलक वाले वर्शन में रजिस्टर करने की ज़रूरी शर्तों और निर्देशों के लिए, AICore Developer Preview की गाइड देखें.
मॉडल की प्राथमिकता
मॉडल की प्राथमिकता की मदद से, यह तय किया जा सकता है कि आपके इस्तेमाल के उदाहरण के लिए, परफ़ॉर्मेंस की कौनसी विशेषताएं सबसे अहम हैं.
- फ़ुल (
ModelPreference.FULL): हमारा सुझाव है कि यह विकल्प तब चुनें, जब स्पीड के बजाय मॉडल की सटीक जानकारी और पूरी क्षमताओं को प्राथमिकता दी जाए. - तेज़ (
ModelPreference.FAST): यह सेटिंग उन ऐप्लिकेशन के लिए सुझाई जाती है जो इंतज़ार के समय के हिसाब से संवेदनशील होते हैं और जिन्हें कम से कम रिस्पॉन्स टाइम की ज़रूरत होती है.
जनरेटिव मॉडल को कॉन्फ़िगर करना
किसी मॉडल के वैरिएंट का इस्तेमाल करने के लिए, आपको ModelConfig तय करना होगा. साथ ही, क्लाइंट को शुरू करते समय उसे GenerationConfig को पास करना होगा.
यहां दिए गए उदाहरण में, क्लाइंट को झलक स्टेज से फ़ास्ट मॉडल का इस्तेमाल करने के लिए कॉन्फ़िगर करने का तरीका बताया गया है:
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 डेवलपर के लिए झलक वाली गाइड में मौजूद, इस्तेमाल किए जा सकने वाले डिवाइसों की सूची में शामिल हैं.
एपीआई, उपलब्ध सभी मॉडल कॉन्फ़िगरेशन की सूची पहले से देखने का कोई तरीका उपलब्ध नहीं कराता. इसके बजाय, क्लाइंट को अपनी पसंद के कॉन्फ़िगरेशन के साथ शुरू करें. इसके बाद, उसकी स्थिति की पुष्टि करें.
- क्लाइंट को शुरू करना: अपनी पसंद के
ModelConfigका इस्तेमाल करके,GenerativeModelइंस्टेंस बनाएं. स्टेटस देखना: इंस्टेंस पर
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 से ज़्यादा पर सेट किया जाता है, तो गड़बड़ी का मैसेज दिखेगा. ज़्यादा जानकारी के लिए, एपीआई का रेफ़रंस देखें. - कुछ सिस्टम पर, एक से ज़्यादा सैंपल इस्तेमाल नहीं किए जा सकते. इसकी परफ़ॉर्मेंस, फ़ाइनल प्रॉडक्ट से कम होगी.