ক্লাউড রান জবগুলিতে ব্যাচ ইনফারেন্স কীভাবে চালাবেন

১. ভূমিকা

সংক্ষিপ্ত বিবরণ

এই কোডল্যাবে, আপনি ক্লাউড রান জবস জিপিইউ দ্বারা চালিত মেটা-র Llama 3.2-1b LLM এবং vLLM ব্যবহার করে ব্যাচ ইনফারেন্স চালাবেন। আপনি ক্লাউড রান ভলিউম মাউন্ট ব্যবহার করে ফলাফলগুলো সরাসরি ক্লাউড স্টোরেজে লিখবেন।

আপনি যা শিখবেন

  • ক্লাউড রান জবস জিপিইউ ব্যবহার করে কীভাবে ব্যাচ ইনফারেন্স পরিচালনা করবেন
  • ক্লাউড রান ভলিউম মাউন্ট ব্যবহার করে ক্লাউড স্টোরেজে কীভাবে লিখবেন

২. শুরু করার আগে

এপিআই সক্ষম করুন

এই কোডল্যাবটি ব্যবহার শুরু করার আগে, নিম্নলিখিত API-গুলি সক্রিয় করতে রান করুন:

gcloud services enable run.googleapis.com \
    cloudbuild.googleapis.com \
    secretmanager.googleapis.com \
    artifactregistry.googleapis.com

জিপিইউ কোটা

একটি সমর্থিত অঞ্চলের জন্য কোটা বৃদ্ধির অনুরোধ করুন । কোটাটি হলো nvidia_l4_gpu_allocation_no_zonal_redundancy , যা Cloud Run Admin API-এর অধীনে রয়েছে।

দ্রষ্টব্য: আপনি যদি একটি নতুন প্রজেক্ট ব্যবহার করেন, তাহলে API সক্রিয় করার পর এই পৃষ্ঠায় কোটাগুলো প্রদর্শিত হতে কয়েক মিনিট সময় লাগতে পারে।

আলিঙ্গনরত মুখ

এই কোডল্যাবে হাগিং ফেস -এ হোস্ট করা একটি মডেল ব্যবহার করা হয়েছে। এই মডেলটি পেতে, "রিড" পারমিশনসহ হাগিং ফেস ইউজার অ্যাক্সেস টোকেনের জন্য অনুরোধ করুন। পরবর্তীতে আপনি এটিকে YOUR_HF_TOKEN হিসেবে উল্লেখ করবেন।

মডেলটি ব্যবহার করার জন্য আপনাকে ব্যবহারের শর্তাবলীতেও সম্মত হতে হবে: https://huggingface.co/meta-llama/Llama-3.2-1B

৩. সেটআপ এবং প্রয়োজনীয়তা

এই বিভাগে নিম্নলিখিত রিসোর্সগুলি সেট আপ করার নির্দেশাবলী রয়েছে:

  • IAM পরিষেবা অ্যাকাউন্ট এবং সংশ্লিষ্ট IAM অনুমতিসমূহ।
  • আপনার হাগিং ফেস টোকেন সংরক্ষণ করার জন্য সিক্রেট ম্যানেজারের গোপন কোড
  • আপনার অনুমানের ফলাফল সংরক্ষণের জন্য ক্লাউড স্টোরেজ বাকেট।

প্রয়োজনীয় রিসোর্সগুলো সেট আপ করতে, এই ধাপগুলো অনুসরণ করুন:

  1. এই কোডল্যাবের জন্য এনভায়রনমেন্ট ভেরিয়েবল সেট করুন:
    export PROJECT_ID=<your_project_id>
    export REGION=<your_region>
    export HF_TOKEN=<YOUR_HF_TOKEN>
    
    export SERVICE_ACCOUNT=inference-service-account
    export SERVICE_ACCOUNT_EMAIL=${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com
    export SECRET_ID=hugging-face-token
    export BUCKET_NAME=inference-codelab-${PROJECT_ID}
    
  2. নিম্নলিখিত কমান্ডটি চালিয়ে সার্ভিস অ্যাকাউন্টটি তৈরি করুন:
    gcloud iam service-accounts create ${SERVICE_ACCOUNT} \
      --display-name="Service account for batch inference codelab"
    
  3. হাগিং ফেস অ্যাক্সেস টোকেন সংরক্ষণ করতে সিক্রেট ম্যানেজার ব্যবহার করুন:
    gcloud secrets create $SECRET_ID \
          --replication-policy="automatic"
    
    printf $HF_TOKEN | gcloud secrets versions add $SECRET_ID --data-file=-
    
  4. আপনার পরিষেবা অ্যাকাউন্টকে সিক্রেট ম্যানেজার সিক্রেট অ্যাক্সেসর-এর ভূমিকা প্রদান করুন:
    gcloud secrets add-iam-policy-binding $SECRET_ID \
      --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \
      --role='roles/secretmanager.secretAccessor'
    
  5. আপনার পরিমার্জিত মডেলটি হোস্ট করার জন্য একটি বাকেট তৈরি করুন:
    gcloud storage buckets create -l us-central1 gs://${BUCKET_NAME}
    
  6. আপনার পরিষেবা অ্যাকাউন্টকে বাকেটটিতে অ্যাক্সেস দিন:
    gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME \
      --member=serviceAccount:$SERVICE_ACCOUNT_EMAIL \
      --role=roles/storage.objectAdmin
    
  7. কন্টেইনার ইমেজ সংরক্ষণের জন্য একটি আর্টিফ্যাক্ট রেজিস্ট্রি রিপোজিটরি তৈরি করুন। আপনি যদি আপনার প্রোজেক্টে আগে ক্লাউড রান সোর্স ডিপ্লয় ব্যবহার করে থাকেন, তাহলে এই ধাপটি এড়িয়ে যান।
    gcloud artifacts repositories create cloud-run-source-deploy \
        --repository-format=docker \
        --location=$REGION \
        --project=$PROJECT_ID
    

৪. ক্লাউড রান জবটি তৈরি করুন

এই অংশে, আপনি এমন কোড তৈরি করবেন যা নিম্নলিখিত কাজগুলো করবে:

  • Hugging Face থেকে Llama মডেলটি আমদানি করে
  • মডেলটির উপর ব্যাচ ইনফারেন্স সম্পাদন করে। এই প্রক্রিয়ায় কাজটি একটিমাত্র L4 GPU ব্যবহার করে।
  • ফলাফলগুলো স্থানীয় ডিস্কে লেখা হয়। এটি ভলিউম মাউন্টের মাধ্যমে ক্লাউড স্টোরেজে লেখা হয়।

Cloud Run জব এবং Dockerfile তৈরি করতে, এই ধাপগুলো অনুসরণ করুন:

  1. আপনার ফাইন টিউনিং জব কোড রাখার জন্য একটি ডিরেক্টরি তৈরি করুন:
    mkdir codelab-inference-job
    cd codelab-inference-job
    
  2. main.py নামে একটি ফাইল তৈরি করুন।
    # SPDX-License-Identifier: Apache-2.0
    from vllm import LLM, SamplingParams
    
    # Sample prompts.
    prompts = [
        "Cloud Run is",
        "The future of AI is",
        "The capital of Germany is",
        "python as a programming language is",
    ]
    # Create a sampling params object.
    sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
    
    # Create an LLM.
    llm = LLM(model="meta-llama/Llama-3.2-1B")
    # Generate texts from the prompts. The output is a list of RequestOutput objects
    # that contain the prompt, generated text, and other information.
    outputs = llm.generate(prompts, sampling_params)
    
    # Save the outputs to disk
    with open("/results/output.txt", "w") as f:
        for output in outputs:
            prompt = output.prompt
            generated_text = output.outputs[0].text
            f.write(f"Prompt: {prompt!r}, Generated text: {generated_text!r}\n")
    
    print(f"Wrote {len(outputs)} to disk.")
    
  3. একটি Dockerfile তৈরি করুন:
    FROM python:3.12
    ADD main.py .
    RUN python -m pip install --upgrade pip setuptools
    RUN pip install vllm
    CMD ["python", "./main.py"]
    

৫. জবটি ডেপ্লয় এবং এক্সিকিউট করুন।

এই ধাপে, আপনি ক্লাউড রান সোর্স ডিপ্লয় ব্যবহার করে ক্লাউড রান জবটি তৈরি করবেন এবং তারপর সেটি এক্সিকিউট করবেন। এই ধাপে ফলাফল সংরক্ষণের জন্য ক্লাউড রান ভলিউম মাউন্ট ফ্ল্যাগগুলোও অন্তর্ভুক্ত রয়েছে।

  1. ক্লাউড রান জব তৈরি করুন:
    gcloud run jobs deploy inference-job \
      --region $REGION \
      --source . \
      --gpu=1 \
      --set-secrets HF_TOKEN=${SECRET_ID}:latest \
      --add-volume name=results,type=cloud-storage,bucket=${BUCKET_NAME} \
      --add-volume-mount volume=results,mount-path=/results \
      --service-account $SERVICE_ACCOUNT_EMAIL
    
    এই কমান্ডটি সোর্স থেকে ইমেজ তৈরি করে এবং জবটি ডেপ্লয় করে। এটি সম্পন্ন হতে কিছুটা সময় লাগবে।
  2. কাজটি সম্পাদন করুন:
    gcloud run jobs execute inference-job --region $REGION --async
    
    কাজটি সম্পন্ন হতে কয়েক মিনিট সময় লাগবে। শেষ কমান্ডের আউটপুটে দেওয়া লিঙ্কটি ব্যবহার করে আপনি স্ট্যাটাস চেক করতে পারেন।

সাফল্য নিশ্চিতকরণ

আপনার কাজটি সফলভাবে সম্পন্ন হয়েছে কিনা তা নিশ্চিত করতে, শেষ কমান্ডের আউটপুটে থাকা কাজের লগগুলো দেখুন।

ক্লাউড স্টোরেজ বাকেটে ফলাফলগুলো যাচাই করুন:

কনসোলে:

  1. ক্লাউড স্টোরেজে যান।
  2. inference-codelab দিয়ে শুরু হওয়া বাকেটটি নির্বাচন করুন।
  3. output.txt নির্বাচন করুন।
  4. ব্রাউজারে বিষয়বস্তু দেখতে প্রমাণীকৃত ইউআরএল-এ ক্লিক করুন।

ফাইলটির বিষয়বস্তু হবে চারটি প্রম্পট এবং সেগুলোর আউটপুট।

৬. অভিনন্দন!

কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন!

আমরা ক্লাউড রান ডকুমেন্টেশন পর্যালোচনা করার পরামর্শ দিই।

আমরা যা আলোচনা করেছি

  • ক্লাউড রান জবস জিপিইউ ব্যবহার করে কীভাবে ব্যাচ ইনফারেন্স পরিচালনা করবেন
  • ক্লাউড রান ভলিউম মাউন্ট ব্যবহার করে ক্লাউড স্টোরেজে কীভাবে লিখবেন

৭. পরিষ্কার করুন

Cloud Run জবটি ডিলিট করতে, https://console.cloud.google.com/run ঠিকানায় Cloud Run ক্লাউড কনসোলে যান এবং inference-job জবটি ডিলিট করে দিন।

সম্পূর্ণ প্রজেক্টটি ডিলিট করতে, 'Manage Resources'- এ যান, ধাপ ২-এ তৈরি করা প্রজেক্টটি সিলেক্ট করুন এবং 'Delete' বেছে নিন। প্রজেক্টটি ডিলিট করলে, আপনাকে আপনার Cloud SDK-তে প্রজেক্ট পরিবর্তন করতে হবে। gcloud projects list চালিয়ে আপনি সমস্ত উপলব্ধ প্রজেক্টের তালিকা দেখতে পারেন।