মডেল বেছে নিন

সরাসরি মডেল অ্যাক্সেস আপনাকে আপনার অ্যাপের মাধ্যমে ব্যবহার করা Gemini Nano-এর ভার্সন স্পষ্টভাবে বেছে নিতে দেয়। মডেল রিলিজের পর্যায় এবং পারফর্ম্যান্স সংক্রান্ত পছন্দ কনফিগার করে, আপনি নতুন মডেলের ক্ষমতা আগে অ্যাক্সেস করতে পারবেন অথবা নির্দিষ্ট হার্ডওয়্যার সংক্রান্ত সীমাবদ্ধতার জন্য আপনার অ্যাপ অপ্টিমাইজ করতে পারবেন।

মডেল কনফিগারেশন বোঝা

নির্দিষ্ট মডেল বেছে নিতে, আপনাকে ModelConfig ক্লাসের মধ্যে দুটি মূল প্যারামিটার কনফিগার করতে হবে: রিলিজ স্টেজ এবং মডেল প্রেফারেন্স।

রিলিজের ধাপ

রিলিজ স্টেজ আপনাকে স্টেবল বা প্রিভিউ মডেলের মধ্যে থেকে বেছে নিতে দেয়:

  • স্টেবল (ModelReleaseStage.STABLE): লেটেস্ট মডেল ভার্সন বেছে নেয় যা সম্পূর্ণভাবে পরীক্ষা করা হয়েছে এবং গ্রাহকের ডিভাইসে রয়েছে। এটি হল ডিফল্ট সেটিং।
  • প্রিভিউ (ModelReleaseStage.PREVIEW): প্রিভিউ স্টেজে লেটেস্ট মডেল ভার্সন বেছে নেয়। এই পর্যায়ে আপনি বিটা ফিচার বা নতুন মডেল আর্কিটেকচার স্টেবল পর্যায়ে ব্যাপকভাবে ডিপ্লয় করার আগে পরীক্ষা করতে পারবেন।

ডেভেলপার প্রিভিউয়ের জন্য পূর্বপ্রয়োজনীয়তা ও এনরোলমেন্ট সংক্রান্ত নির্দেশাবলী জানতে, AICore ডেভেলপার প্রিভিউ গাইড দেখুন।

মডেল সম্পর্কিত পছন্দ

মডেলের পছন্দ আপনাকে নির্দিষ্ট করতে দেয় যে কোন পারফর্ম্যান্স বৈশিষ্ট্যগুলি আপনার ব্যবহারের ক্ষেত্রে সবচেয়ে গুরুত্বপূর্ণ।

  • সম্পূর্ণ (ModelPreference.FULL): গতির চেয়ে মডেলের নির্ভুলতা ও সম্পূর্ণ ক্ষমতার উপর বেশি জোর দেওয়া হলে, এই পছন্দ সাজেস্ট করা হয়।
  • ফাস্ট (ModelPreference.FAST): এই পছন্দটি লেটেন্সি-সংবেদনশীল অ্যাপের জন্য সাজেস্ট করা হয় যেগুলির জন্য ন্যূনতম রেসপন্স টাইম প্রয়োজন।

জেনারেটিভ মডেল কনফিগার করুন

নির্দিষ্ট কোনও মডেল ভেরিয়েন্ট ব্যবহার করতে, আপনাকে অবশ্যই 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-তে উপলভ্য সব মডেল কনফিগারেশনের তালিকা দেখানোর কোনও পদ্ধতি নেই। পরিবর্তে, আপনার পছন্দসই কনফিগারেশন সহ ক্লায়েন্ট শুরু করুন এবং তারপরে এর স্ট্যাটাস যাচাই করুন।

  • ক্লায়েন্ট ইনিশিয়ালাইজ করা: আপনার পছন্দের 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));

ভবিষ্যতে সম্ভাব্য কনফিগারেশনের সাথে মানানসই হওয়ার বিষয়টি নিশ্চিত করতে, ক্লায়েন্ট ইনিশিয়ালাইজেশনের সময় GenAiException থ্রো করা এড়ানোর জন্য SDK ডিজাইন করা হয়েছে, যা উপলভ্যতা যাচাইকরণের জন্য শুধুমাত্র checkStatus() পদ্ধতির উপর নির্ভর করে।

পেশাদার পদ্ধতি

  • ফলব্যাক স্ট্র্যাটেজি প্রয়োগ করা: প্রিভিউ মডেল সব ডিভাইসে উপলভ্য হওয়ার কোনও গ্যারেন্টি নেই, তাই সবসময় ফলব্যাক স্ট্র্যাটেজি প্রয়োগ করুন। যদি checkStatus() প্রিভিউ কনফিগারেশনের জন্য false রিটার্ন করে, তাহলে আপনার অ্যাপকে ModelReleaseStage.STABLE এবং ModelPreference.FULL-এ সুন্দরভাবে ফিরে যেতে হবে।
  • ডেভেলপমেন্ট ও প্রোডাকশনের জন্য মডেল রিলিজের বিভিন্ন ধাপ ব্যবহার করুন: ডেভেলপমেন্ট ও ইন্টার্নাল টেস্টিংয়ের সময় প্রিভিউ ধাপ ব্যবহার করে আসন্ন মডেলের উন্নতি মূল্যায়ন করুন। আপনার ব্যবহারকারীদের জন্য সামঞ্জস্যপূর্ণ আচরণ নিশ্চিত করতে, আপনার পাবলিক প্রোডাকশন রিলিজের জন্য স্টেবল ভার্সনে পরিবর্তন করুন।

পরিচিত সমস্যা

  • প্রিভিউ রিলিজ স্টেজে থাকা কিছু ডিভাইসের ক্ষেত্রে, সেগুলি আউটপুটে একাধিক ক্যান্ডিডেটকে সাপোর্ট করবে না এবং candidateCount ১-এর থেকে বেশি সেট করা থাকলে একটি সমস্যা দেখাবে। আরও বিবরণের জন্য API রেফারেন্স দেখুন।
  • কিছু ইমপ্লিমেন্টেশনে একাধিক স্যাম্পেল কাজ করে না। পারফর্ম্যান্স চূড়ান্ত প্রোডাকশনের চেয়ে ধীরগতির হবে।