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

1. ভূমিকা

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

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

তুমি কি শিখবে

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

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

API গুলি সক্ষম করুন

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

আলিঙ্গনকারী মুখ

এই কোডল্যাবটি Hugging Face এ হোস্ট করা একটি মডেল ব্যবহার করে। এই মডেলটি পেতে, "Read" অনুমতি নিয়ে Hugging Face ব্যবহারকারীর অ্যাক্সেস টোকেনের জন্য অনুরোধ করুন। আপনি এটি পরে 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. Hugging Face অ্যাক্সেস টোকেন সংরক্ষণ করতে Secret Manager ব্যবহার করুন:
    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
    

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

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

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

ক্লাউড রান জব এবং একটি ডকারফাইল তৈরি করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  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"]
    

৫. কাজটি স্থাপন এবং সম্পাদন করুন

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

  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. ব্রাউজারে কন্টেন্ট দেখতে Authenticated URL-এ ক্লিক করুন।

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

৬. অভিনন্দন!

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

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

আমরা যা কভার করেছি

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

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

ক্লাউড রান জবটি মুছে ফেলতে, https://console.cloud.google.com/run এ ক্লাউড রান ক্লাউড কনসোলে যান এবং inference-job জবটি মুছে ফেলুন।

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