১. সংক্ষিপ্ত বিবরণ
এই কোডল্যাবটি আপনাকে প্রম্পট এনক্রিপশন এসডিকে ব্যবহার করে গুগল ক্লাউডের ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্ট (টিইই)-এ পরিবেশিত একটি মডেলের সাথে নিরাপদে যোগাযোগ করার পদ্ধতি ধাপে ধাপে দেখাবে।
আপনি যা শিখবেন
- একটি ক্লায়েন্ট এবং একটি রিমোট ইনফারেন্স সার্ভারের মধ্যে ক্রিপ্টোগ্রাফিকভাবে যাচাইকৃত এবং এনক্রিপ্টেড চ্যানেল স্থাপন করা।
- অ্যাটেস্টেড টিএলএস ব্যবহার করে সার্ভারের পরিচয় (সফটওয়্যার হ্যাশ, হার্ডওয়্যার মডেল, লঞ্চ কনফিগারেশন) যাচাই করা হচ্ছে।
- যাচাইকৃত এনক্লেভে পৌঁছানো পর্যন্ত প্রম্পটগুলোকে এনক্রিপ্ট করে ডেটার সার্বভৌমত্ব নিশ্চিত করা হয়।
- কনফিডেনশিয়াল স্পেসে চলমান vLLM-এর সাথে ইন্টারঅ্যাক্ট করতে প্রম্পট এনক্রিপশন SDK ব্যবহার করা।
আপনার যা যা লাগবে
- বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট।
- গুগল ক্লাউড এসডিকে (gcloud) ইনস্টল এবং প্রমাণীকৃত হয়েছে।
- পাইথন ৩.১০+ পরিবেশ।
- জেমা মডেল ডাউনলোড করার জন্য একটি আলিঙ্গনরত মুখের টোকেন।
- VPC ফায়ারওয়াল এবং এক্সটার্নাল আইপি অ্যাড্রেস কোটা সম্পর্কে ধারণা থাকা।
- স্থানীয়ভাবে SDK বিল্ড করার জন্য _ekm.c C এক্সটেনশনটি কম্পাইল করতে হয়। পাইথন C হেডার ইনস্টল করা না থাকলে এই ধাপটি ব্যর্থ হয়। এর সমাধান করতে python3-dev ইনস্টল করুন (যেমন, Debian/Ubuntu-এর জন্য sudo apt-get install python3-dev)।
২. ক্লাউড রিসোর্স সেট আপ করা
শুরু করার আগে, নিশ্চিত করুন যে আপনি প্রয়োজনীয় API-গুলো সক্রিয় করেছেন এবং আপনার পরিবেশ কনফিগার করেছেন।
১. প্রয়োজনীয় এপিআইগুলো সক্রিয় করুন:
gcloud services enable compute.googleapis.com \
confidentialcomputing.googleapis.com \
logging.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com
২. ডকার কনফিগার করুন:
gcloud auth configure-docker gcr.io
৩. আলিঙ্গনরত মুখের টোকেন সেট করুন:
export HF_TOKEN="your_token"
৪. রিপোজিটরিটি ক্লোন করুন:
git clone https://github.com/google/prompt-encryption-sdk && cd prompt-encryption-sdk
৩. দৃশ্যকল্প
আমরা ব্যবহার করব:
- ক্লায়েন্ট: আপনার স্থানীয় পাইথন পরিবেশ অথবা একটি স্ট্যান্ডার্ড ভিএম।
- সার্ভার: একটি vLLM ইনস্ট্যান্স যা একটি গোপনীয় স্থানের (TDX/SEV-SNP) অভ্যন্তরে একটি ওপেন-সোর্স মডেল (যেমন, Gemma) পরিবেশন করে।
- SDK: prompt_encryption_sdk পাইথন লাইব্রেরি।
৪. ধাপ ০: সার্ভার সেটআপ
ক্লায়েন্ট কোনো কিছু যাচাই করার আগে, আমাদের কনফিডেনশিয়াল স্পেসে একটি সার্ভার চালু থাকা প্রয়োজন। প্রদত্ত একটি ব্যাশ স্ক্রিপ্ট এই ব্যবস্থাটি পরিচালনা করে।
./codelabs/setup.sh --project-id <PROJECT_ID>
setup.sh স্ক্রিপ্টটি নিম্নলিখিত কাজগুলো করে থাকে:
- প্রয়োজনীয় এপিআইগুলো (কম্পিউট, কনফিডেনশিয়াল কম্পিউটিং, লগিং, আর্টিফ্যাক্ট রেজিস্ট্রি, ক্লাউড বিল্ড) সক্রিয় করে।
- Attested TLS মিডলওয়্যার দিয়ে vLLM-কে র্যাপ করে ডকার ইমেজটি বিল্ড ও পুশ করে।
- প্রয়োজনীয় অনুমতিসহ একটি সার্ভিস অ্যাকাউন্ট প্রদান করে।
- গোপনীয় ভিএম তৈরি করে (H100 GPU এবং TDX সক্রিয় সহ একটি A3 ইনস্ট্যান্স)।
- নেটওয়ার্কিং এবং লোড ব্যালান্সিং কনফিগার করে (পাসথ্রু নেটওয়ার্ক লোড ব্যালান্সার)।
- আউটপুট (ইমেজ হ্যাশ এবং লোড ব্যালেন্সার আইপি) স্থানীয় ফাইলে সংরক্ষণ করে।
৫. ধাপ ১: সত্যায়িত ক্লায়েন্টটি চালান
এখন যেহেতু সার্ভারটি নিরাপদে চলছে, একটি সত্যায়িত সংযোগ স্থাপন করুন।
python3 -m venv venv
source venv/bin/activate
pip install -r examples/requirements.txt
pip install -e .
./codelabs/run_client.sh <PROJECT_ID>
`run_client.sh` স্ক্রিপ্টটি ডিপ্লয়মেন্টের বিবরণ পড়ে এবং `ConfidentialSDKClient` ব্যবহার করে একটি পাইথন রিকোয়েস্ট এক্সিকিউট করে। যদি অ্যাটেস্টেশন ব্যর্থ হয়, তাহলে একটি `AttestationError` উত্থাপিত হয় এবং প্রম্পটটি কখনোই পাঠানো হয় না।
৬. ধাপ ২: পরিষ্কার করা
চার্জ এড়াতে, কাজ শেষ হলে রিসোর্সগুলো পরিষ্কার করে ফেলুন।
./codelabs/cleanup.sh --project-id <PROJECT_ID>
৭. ভেতরের খবর
http.post চলাকালীন কী ঘটে?
- TCP/TLS: প্রমিত সংযোগ স্থাপিত হয়েছে।
- হ্যান্ডশেক ইন্টারসেপশন: বডি পাঠানোর আগে SDK কিছুক্ষণ বিরতি নেয়।
- AttestConnection RPC: SDK সার্ভারে একটি ননস (nonce) পাঠায়।
- মূল্য উদ্ধৃতি তৈরি: সার্ভার একটি TEE হার্ডওয়্যারের মূল্য উদ্ধৃতির জন্য অনুরোধ করে।
- যাচাইকরণ: এসডিকে উদ্ধৃতির স্বাক্ষর এবং নীতি যাচাই করে।
- বাইন্ড : এসডিকে যাচাই করে যে চ্যানেলটির "এক্সপোর্টেড কিয়িং ম্যাটেরিয়াল" উদ্ধৃতিতে বাইন্ড করা সেশনের সাথে মেলে কিনা।
- ডেটা ট্রান্সমিশন: সমস্ত যাচাই সফল হলেই মূল বার্তা পাঠানো হয়।
৮. সমস্যা সমাধান
- প্রত্যয়ন ব্যর্থ: পলিসিতে থাকা image_hash কন্টেইনারের সাথে মেলে কিনা তা যাচাই করুন।
- সংযোগ প্রত্যাখ্যাত: নিশ্চিত করুন যে সার্ভারটি প্রবেশযোগ্য এবং পোর্ট ৮০০০ খোলা আছে।
- টাইমআউট: TEE কোট তৈরি হতে সময় লাগতে পারে; নিশ্চিত করুন যেন টাইমআউটগুলো পর্যাপ্ত থাকে।
৯. অভিনন্দন
আপনি সফলভাবে প্রম্পট এনক্রিপশন এসডিকে কোডল্যাবটি সম্পন্ন করেছেন! আপনি শিখেছেন কীভাবে আপনার ক্লায়েন্ট এবং একটি টিইই-ভিত্তিক ইনফারেন্স সার্ভারের মধ্যে একটি ক্রিপ্টোগ্রাফিকভাবে যাচাইকৃত এবং এনক্রিপ্টেড চ্যানেল স্থাপন করতে হয়।
এরপর কী?
- উন্নত AttestationPolicy কনফিগারেশনগুলো অন্বেষণ করুন।
- আপনার বিদ্যমান প্রোডাকশন অ্যাপ্লিকেশনগুলোর সাথে SDK-টি ইন্টিগ্রেট করুন।
- কনফিডেনশিয়াল স্পেস এবং টিইই হার্ডওয়্যার মডেল সম্পর্কে আরও জানুন।