شعار زيفيرنت

استدلال نموذج لغة كبير على البيانات السرية باستخدام AWS Nitro Enclaves | خدمات الويب الأمازون

التاريخ:

تمت كتابة هذا المنشور بالاشتراك مع جوستين مايلز، وليف داليبرتي، وجو كوفبا من ليدوس. 

Leidos هي شركة رائدة في مجال الحلول العلمية والتكنولوجية ضمن قائمة Fortune 500 وتعمل على معالجة بعض أصعب التحديات في العالم في مجالات الدفاع والاستخبارات والأمن الداخلي والأسواق المدنية والرعاية الصحية. في هذا المنشور، نناقش كيفية عمل Leidos مع AWS لتطوير نهج لاستدلال نموذج اللغة الكبيرة (LLM) الذي يحافظ على الخصوصية باستخدام جيوب AWS نيترو.

تم تصميم LLMs لفهم وتوليد لغة تشبه الإنسان، وتستخدم في العديد من الصناعات، بما في ذلك الحكومة والرعاية الصحية والمالية والملكية الفكرية. تتمتع LLMs بقابلية تطبيق واسعة، بما في ذلك برامج الدردشة الآلية، وإنشاء المحتوى، وترجمة اللغة، وتحليل المشاعر، وأنظمة الإجابة على الأسئلة، ومحركات البحث، وإنشاء الأكواد البرمجية. إن إدخال الاستدلال المستند إلى LLM في النظام لديه أيضًا القدرة على تقديم تهديدات للخصوصية، بما في ذلك سرقة النماذج، وانتهاكات خصوصية البيانات، والتلاعب غير المقصود بالخدمة المستندة إلى LLM. يجب تنفيذ البنى التقنية للتأكد من أن LLMs لا تكشف عن معلومات حساسة أثناء الاستدلال.

يناقش هذا المنشور كيف يمكن أن تساعد Nitro Enclaves في حماية عمليات نشر نماذج LLM، وتحديدًا تلك التي تستخدم معلومات التعريف الشخصية (PII) أو المعلومات الصحية المحمية (PHI). هذا المنشور مخصص للأغراض التعليمية فقط ولا ينبغي استخدامه في بيئات الإنتاج دون ضوابط إضافية.

نظرة عامة على LLMs وNitro Enclaves

حالة الاستخدام المحتملة هي برنامج محادثة حساس للاستعلام قائم على LLM مصمم لتنفيذ خدمة الأسئلة والإجابة التي تحتوي على معلومات PII وPHI. تُعلم معظم حلول chatbot الحالية من LLM المستخدمين بوضوح أنه لا ينبغي عليهم تضمين معلومات PII أو PHI عند إدخال الأسئلة بسبب المخاوف الأمنية. وللتخفيف من هذه المخاوف وحماية بيانات العملاء، يعتمد أصحاب الخدمة بشكل أساسي على وسائل حماية المستخدم مثل ما يلي:

  • تنقيح – عملية تحديد وإخفاء المعلومات الحساسة مثل معلومات تحديد الهوية الشخصية (PII) في المستندات أو النصوص أو أشكال المحتوى الأخرى. يمكن تحقيق ذلك من خلال إدخال البيانات قبل إرسالها إلى نموذج أو ماجستير إدارة أعمال مدرب على تنقيح ردودهم تلقائيًا.
  • المصادقة متعددة العوامل – عملية أمنية تتطلب من المستخدمين توفير طرق مصادقة متعددة للتحقق من هويتهم للوصول إلى LLM.
  • أمن طبقة النقل (TLS) - بروتوكول تشفير يوفر اتصالاً آمنًا يعزز خصوصية البيانات أثناء النقل بين المستخدمين وخدمة LLM.

على الرغم من أن هذه الممارسات تعزز الوضع الأمني ​​للخدمة، إلا أنها ليست كافية لحماية جميع معلومات المستخدم الحساسة والمعلومات الحساسة الأخرى التي يمكن أن تستمر دون علم المستخدم.

في حالة الاستخدام الخاصة بنا، تم تصميم خدمة LLM للإجابة على أسئلة مزايا الرعاية الصحية للموظفين أو تقديم خطة تقاعد شخصية. دعونا نحلل بنية العينة التالية ونحدد مجالات خطورة خصوصية البيانات.

llm-منطقة المخاطر-الرسم البياني

الشكل 1 – مخطط مناطق مخاطر خصوصية البيانات

مجالات المخاطر المحتملة هي كما يلي:

  1. يمكن للمستخدمين المميزين الوصول إلى المثيل الذي يضم الخادم. قد تؤدي التغييرات غير المقصودة أو غير المصرح بها على الخدمة إلى كشف البيانات الحساسة بطرق غير مقصودة.
  2. يجب أن يثق المستخدمون في أن الخدمة لن تكشف أو تحتفظ بمعلومات حساسة في سجلات التطبيق.
  3. يمكن أن تؤدي التغييرات في حزم التطبيقات إلى تغييرات في الخدمة، مما يؤدي إلى الكشف عن البيانات الحساسة.
  4. يتمتع المستخدمون المميزون الذين لديهم حق الوصول إلى المثيل بوصول غير مقيد إلى LLM الذي تستخدمه الخدمة. قد تتسبب التغييرات في إرجاع معلومات غير صحيحة أو غير دقيقة إلى المستخدمين.

توفر Nitro Enclaves عزلة إضافية لجهازك الأمازون الحوسبة المرنة السحابية (Amazon EC2)، حماية البيانات المستخدمة من الوصول غير المصرح به، بما في ذلك المستخدمين على مستوى المسؤول. في البنية السابقة، من الممكن أن يؤدي التغيير غير المقصود إلى استمرار البيانات الحساسة في نص عادي ويتم الكشف عنها عن طريق الخطأ لمستخدم قد لا يحتاج إلى الوصول إلى تلك البيانات. باستخدام Nitro Enclaves، يمكنك إنشاء بيئة معزولة من مثيل EC2 الخاص بك، مما يسمح لك بتخصيص موارد وحدة المعالجة المركزية والذاكرة للجيب. هذا الجيب عبارة عن آلة افتراضية مقيدة للغاية. من خلال تشغيل التعليمات البرمجية التي تتعامل مع البيانات الحساسة داخل المنطقة المحصورة، لن تتمكن أي من العمليات الرئيسية من عرض بيانات المنطقة المحصورة.

توفر Nitro Enclaves المزايا التالية:

  • عزل الذاكرة ووحدة المعالجة المركزية - يعتمد على Nitro Hypervisor لعزل وحدة المعالجة المركزية وذاكرة الجيب عن المستخدمين والتطبيقات والمكتبات الموجودة على المثيل الأصلي. تساعد هذه الميزة على عزل المنطقة المحاصرة وبرامجك، وتقلل بشكل كبير من مساحة السطح للأحداث غير المقصودة.
  • آلة افتراضية منفصلة - الجيوب عبارة عن أجهزة افتراضية منفصلة متصلة بمثيل EC2 لمزيد من الحماية ومعالجة البيانات الحساسة للغاية بشكل آمن.
  • لا يوجد وصول تفاعلي - توفر الجيوب اتصال مأخذ توصيل محلي آمن فقط مع المثيل الأصلي الخاص بها. ليس لديهم تخزين دائم، أو وصول تفاعلي، أو شبكات خارجية.
  • شهادة التشفير – عروض Nitro Enclaves شهادة التشفير، وهي عملية تُستخدم لإثبات هوية الجيب والتحقق من تشغيل الكود المعتمد فقط في الجيب الخاص بك.
  • التكامل مع AWS - تم دمج Nitro Enclaves مع خدمة إدارة مفتاح AWS (AWS KMS)، مما يسمح لك بفك تشفير الملفات التي تم تشفيرها باستخدام AWS KMS داخل الجيب. مدير شهادات AWS (ACM) لـ Nitro Enclaves يسمح لك باستخدام شهادات SSL/TLS العامة والخاصة مع تطبيقات الويب والخوادم التي تعمل على مثيلات EC2 مع Nitro Enclaves.

يمكنك استخدام هذه الميزات التي توفرها Nitro Enclaves للمساعدة في تخفيف المخاطر المرتبطة ببيانات PII وPHI. نوصي بتضمين Nitro Enclaves في خدمة LLM عند التعامل مع بيانات المستخدم الحساسة.

حل نظرة عامة

دعونا نفحص بنية الخدمة النموذجية، بما في ذلك Nitro Enclaves الآن. من خلال دمج Nitro Enclaves، كما هو موضح في الشكل التالي، يصبح LLM برنامج دردشة أكثر أمانًا للتعامل مع بيانات PHI أو PII.

llm-استخدام-aws-nitro-enclaves-diagram

الشكل 2 - مخطط نظرة عامة على الحل

تظل بيانات المستخدم، بما في ذلك معلومات تحديد الهوية الشخصية (PII) والمعلومات الصحية المحمية (PHI) والأسئلة، مشفرة طوال عملية الرد على الطلب عندما تتم استضافة التطبيق داخل منطقة محصورة. الخطوات التي يتم تنفيذها أثناء الاستدلال هي كما يلي:

  1. يقوم تطبيق chatbot بإنشاء بيانات اعتماد AWS مؤقتة ويطلب من المستخدم إدخال سؤال. يتم بعد ذلك تشفير السؤال، الذي قد يحتوي على معلومات PII أو PHI، عبر AWS KMS. يتم دمج إدخال المستخدم المشفر مع بيانات الاعتماد المؤقتة لإنشاء الطلب المشفر.
  2. يتم إرسال البيانات المشفرة إلى خادم HTTP يستضيفه Flask كطلب POST. قبل قبول البيانات الحساسة، يجب تكوين نقطة النهاية هذه لـ HTTPs.
  3. يتلقى تطبيق العميل طلب POST ويعيد توجيهه عبر قناة محلية آمنة (على سبيل المثال، vsock) إلى تطبيق الخادم الذي يعمل داخل Nitro Enclaves.
  4. يستخدم تطبيق خادم Nitro Enclaves بيانات الاعتماد المؤقتة لفك تشفير الطلب والاستعلام عن LLM وإنشاء الاستجابة. يتم تخزين الإعدادات الخاصة بالنموذج داخل الجيوب وتكون محمية بشهادة التشفير.
  5. يستخدم تطبيق الخادم نفس بيانات الاعتماد المؤقتة لتشفير الاستجابة.
  6. يتم إرجاع الاستجابة المشفرة مرة أخرى إلى تطبيق chatbot من خلال تطبيق العميل كرد من طلب POST.
  7. يقوم تطبيق chatbot بفك تشفير الاستجابة باستخدام مفتاح KMS الخاص به ويعرض النص العادي للمستخدم.

المتطلبات الأساسية المسبقة

قبل أن نبدأ، تحتاج إلى المتطلبات الأساسية التالية لنشر الحل:

تكوين مثيل EC2

أكمل الخطوات التالية لتكوين مثيل EC2:

  1. قم بتشغيل ملف r5.8xlarge مثيل EC2 باستخدام amzn2-ami-kernel-5.10-hvm-2.0.20230628.0-x86_64-gp2 AMI مع تمكين Nitro Enclaves.
  2. قم بتثبيت Nitro Enclaves CLI لإنشاء تطبيقات Nitro Enclaves وتشغيلها:
    • sudo amazon-linux-extras install aws-nitro-enclaves-cli -y
    • sudo yum install aws-nitro-enclaves-cli-devel -y
  3. تحقق من تثبيت Nitro Enclaves CLI:
    • nitro-cli –version
    • الإصدار المستخدم في هذا المنشور هو 1.2.2
  4. قم بتثبيت Git وDocker لإنشاء صور Docker وتنزيل التطبيق من GitHub. أضف مستخدم المثيل الخاص بك إلى مجموعة Docker ( هو مستخدم مثيل IAM الخاص بك):
    • sudo yum install git -y
    • sudo usermod -aG ne <USER>
    • sudo usermod -aG docker <USER>
    • sudo systemctl start docker && sudo systemctl enable docker
  5. ابدأ ومكّن مُخصص Nitro Enclaves وخدمات وكيل vsock:
    • sudo systemctl start nitro-enclaves-allocator.service && sudo systemctl enable nitro-enclaves-allocator.service
    • sudo systemctl start nitro-enclaves-vsock-proxy.service && sudo systemctl enable nitro-enclaves-vsock-proxy.service

يستخدم Nitro Enclaves اتصال مأخذ توصيل محلي يسمى vsock لإنشاء قناة آمنة بين المثيل الأصلي والجيب.

بعد بدء تشغيل جميع الخدمات وتمكينها، أعد تشغيل المثيل للتحقق من أن جميع مجموعات المستخدمين والخدمات تعمل بشكل صحيح:

sudo shutdown -r now

قم بتكوين خدمة مخصص Nitro Enclaves

Nitro Enclaves هي بيئة معزولة تقوم بتعيين جزء من وحدة المعالجة المركزية والذاكرة المثيلة لتشغيل المنطقة المحصورة. باستخدام خدمة مخصص Nitro Enclaves، يمكنك الإشارة إلى عدد وحدات المعالجة المركزية (CPU) ومقدار الذاكرة التي سيتم أخذها من المثيل الأصلي لتشغيل الجيب.

قم بتعديل الموارد المحجوزة للمنطقة باستخدام محرر نصوص (للحل الذي نقدمه، قمنا بتخصيص 8 وحدات معالجة مركزية وذاكرة سعة 70,000 ميجابايت لتوفير موارد كافية):

vi /etc/nitro_enclaves/allocatory.yaml

AWS-Nitro-Enclaves-Allocator-Service-Config

الشكل 3 - تكوين خدمة مخصص AWS Nitro Enclaves

استنساخ المشروع

بعد تكوين مثيل EC2، يمكنك تنزيل التعليمات البرمجية لتشغيل برنامج الدردشة الحساس باستخدام LLM داخل Nitro Enclaves.

تحتاج إلى تحديث server.py ملف بمعرف مفتاح KMS المناسب الذي قمت بإنشائه في البداية لتشفير استجابة LLM.

  1. استنساخ مشروع جيثب:
    • cd ~/ && git clone https://<THE_REPO.git>
  2. انتقل إلى مجلد المشروع لإنشاء ملف enclave_base صورة عامل الميناء التي تحتوي على مجموعة أدوات تطوير برمجيات Nitro Enclaves (SDK) لمستندات تصديق التشفير من Nitro Hypervisor (قد تستغرق هذه الخطوة ما يصل إلى 15 دقيقة):
    • cd /nitro_llm/enclave_base
    • docker build ./ -t “enclave_base”

احفظ LLM في مثيل EC2

نحن نستخدم برنامج Bloom 560m LLM مفتوح المصدر لمعالجة اللغة الطبيعية لتوليد الاستجابات. لم يتم ضبط هذا النموذج بشكل دقيق على معلومات تحديد الهوية الشخصية (PII) ومعلومات الصحة المحمية (PHI)، ولكنه يوضح كيف يمكن لحامل شهادة LLM أن يعيش داخل منطقة محصورة. يجب أيضًا حفظ النموذج على المثيل الأصلي حتى يمكن نسخه إلى المنطقة المحصورة عبر ملف Dockerfile.

  1. انتقل إلى المشروع:
    • cd /nitro_llm
  2. قم بتثبيت المتطلبات اللازمة لحفظ النموذج محليًا:
    • pip3 install requirements.txt
  3. تشغيل save_model.py التطبيق لحفظ النموذج داخل /nitro_llm/enclave/bloom دليل:
    • python3 save_model.py

قم ببناء وتشغيل صورة Nitro Enclaves

لتشغيل Nitro Enclaves، تحتاج إلى إنشاء ملف صورة مضمن (EIF) من صورة Docker لتطبيقك. يحتوي ملف Dockerfile الموجود في دليل الجيب على الملفات والتعليمات البرمجية وLLM التي سيتم تشغيلها داخل الجيب.

سيستغرق بناء الجيب وإدارته عدة دقائق حتى يكتمل.

  1. انتقل إلى جذر المشروع:
    • cd /nitro_llm
  2. قم بإنشاء ملف صورة الجيب باسم enclave.eif:
    • nitro-cli build-enclave --docker-uri enclave:latest --output-file enclave.eif
نتيجة AWS-Nitro-Enclave-Build

الشكل 4 - نتيجة بناء AWS Nitro Enclaves

عند إنشاء الجيب، سيتم إنشاء سلسلة من التجزئات الفريدة وسجلات تكوين النظام الأساسي (PCRs). تعد تقارير إنجاز المشروعات قياسًا متجاورًا لإثبات هوية الأجهزة والتطبيق. ستكون تقارير إنجاز المشروعات هذه مطلوبة لمصادقة التشفير وسيتم استخدامها أثناء خطوة تحديث سياسة مفتاح KMS.

  1. قم بتشغيل الجيب بالموارد من allocator.service (إضافة --attach-console ستعمل الوسيطة في النهاية على تشغيل الجيب في وضع التصحيح):
    • nitro-cli run-enclave --cpu-count 8 --memory 70000 --enclave-cid 16 --eif-path enclave.eif

تحتاج إلى تخصيص أربعة أضعاف حجم ملف EIF على الأقل. يمكن تعديل هذا في allocator.service من الخطوات السابقة .

  1. تحقق من تشغيل الجيب باستخدام الأمر التالي:
    • nitro-cli describe-enclaves
AWS-Nitro-Enclave-وصف-الأوامر-الاستجابة

الشكل 5 - وصف أمر AWS Nitro Enclave

قم بتحديث سياسة مفتاح KMS

أكمل الخطوات التالية لتحديث سياسة مفتاح KMS الخاصة بك:

  1. في وحدة تحكم AWS KMS ، اختر مفاتيح يديرها العميل في جزء التنقل.
  2. ابحث عن المفتاح الذي قمت بإنشائه كشرط أساسي.
  3. اختار تعديل على السياسة الرئيسية.
  4. قم بتحديث السياسة الرئيسية بالمعلومات التالية:
    • معرف حسابك
    • اسم مستخدم IAM الخاص بك
    • دور مثيل بيئة Cloud9 المحدث
    • الإجراءات kms:Encrypt و kms:Decrypt
    • قم بضم PCRs (على سبيل المثال، PCR0، PCR1، PCR2) إلى سياستك الرئيسية باستخدام بيان الشرط

راجع رمز السياسة الرئيسي التالي:

{
   "Version":"2012-10-17",
   "Id":"key-default-1",
   "Statement":[
      {
         "Sid":"Enable User permissions",
         "Effect":"Allow",
         "Principal":{
            "AWS":"arn:aws:iam:::user/"
         },
         "Action":[
            "kms:CreateAlias",
            "kms:CreateKey",
            "kms:DeleteAlias",
            "kms:Describe*",
            "kms:GenerateRandom",
            "kms:Get*",
            "kms:List*",
            "kms:TagResource",
            "kms:UntagResource",
            "iam:ListGroups",
            "iam:ListRoles",
            "iam:ListUsers"
         ],
         "Resource":"*"
      },
      {
         "Sid":"Enable Enclave permissions",
         "Effect":"Allow",
         "Principal":{
            "AWS":"arn:aws:iam:::role/"
         },
         "Action":[
            "kms:Encrypt",
            "kms:Decrypt"
         ],
         "Resource":"*",
         "Condition":{
            "StringEqualsIgnoreCase":{
               "kms:RecipientAttestation:PCR0":"",
               "kms:RecipientAttestation:PCR1":"",
               "kms:RecipientAttestation:PCR2":""
            }
         }
      }
   ]
}

احفظ تطبيق chatbot

لتقليد تطبيق chatbot للاستعلام الحساس الموجود خارج حساب AWS، تحتاج إلى حفظ ملف chatbot.py التطبيق وتشغيله داخل بيئة Cloud9. ستستخدم بيئة Cloud9 الخاصة بك دور المثيل الخاص بها لبيانات الاعتماد المؤقتة لفصل الأذونات عن EC2 الذي يقوم بتشغيل المنطقة المحصورة. أكمل الخطوات التالية:

  1. على وحدة تحكم Cloud9، افتح البيئة التي قمت بإنشائها.
  2. انسخ الكود التالي في ملف جديد مثل chatbot.py في الدليل الرئيسي.
  3. تثبيت الوحدات المطلوبة:
    • pip install boto3
    • Pip install requests
  4. في وحدة تحكم Amazon EC2، لاحظ عنوان IP المرتبط بمثيل Nitro Enclaves الخاص بك.
  5. قم بتحديث متغير URL في http://<ec2instanceIP>:5001.
"""
Modules for a basic chatbot like application and AWS communications
"""
import base64
import requests
import boto3
 
def get_identity_document():
    """
    Get identity document for current EC2 Host
    """
    identity_doc = requests.get(
        "http://169.254.169.254/latest/dynamic/instance-identity/document", timeout=30)
    return identity_doc
 
def get_region(identity):
    """
    Get account of current instance identity
    """
    region = identity.json()["region"]
    return region
 
def get_account(identity):
    """
    Get account of current instance identity
    """
    account = identity.json()["accountId"]
    return account
 
def set_identity():
    """
    Set region and account for KMS
    """
    identity = get_identity_document()
    region = get_region(identity)
    account = get_account(identity)
    return region, account
 
def prepare_server_request(ciphertext):
    """
    Get the AWS credential from EC2 instance metadata
    """
    instance_prof = requests.get(
        "http://169.254.169.254/latest/meta-data/iam/security-credentials/", timeout=30)
    instance_profile_name = instance_prof.text
 
    instance_prof_json = requests.get(
        f"http://169.254.169.254/latest/meta-data/iam/security-credentials/{instance_profile_name}",
        timeout=30)
    response = instance_prof_json.json()
 
    credential = {
        'access_key_id': response['AccessKeyId'],
        'secret_access_key': response['SecretAccessKey'],
        'token': response['Token'],
        'region': REGION,
        'ciphertext': ciphertext
    }
    return credential
 
def get_user_input():
    """
    Start chatbot to collect user input
    """
    print("Chatbot: Hello! How can I assist you?")
    user_input = input('Your Question: ')
    return user_input.lower()
 
def encrypt_string(user_input, alias, kms):
    """
    Encrypt user input using AWS KMS
    """
    file_contents = user_input
    encrypted_file = kms.encrypt(KeyId=f'alias/{alias}', Plaintext=file_contents)
    encrypted_file_contents = encrypted_file[u'CiphertextBlob']
    encrypted_file_contents_base64 = base64.b64encode(encrypted_file_contents)
    return encrypted_file_contents_base64.decode()
 
def decrypt_data(encrypted_data, kms):
    """
    Decrypt the LLM response using AWS KMS
    """
    try:
        ciphertext_blob = base64.b64decode(encrypted_data)
        response = kms.decrypt(CiphertextBlob=ciphertext_blob)
        decrypted_data = response['Plaintext'].decode()
        return decrypted_data
    except ImportError as e_decrypt:
        print("Decryption failed:", e_decrypt)
        return None
 
REGION, ACCOUNT = set_identity()
  
def main():
    """
    Main function to encrypt/decrypt data and send/receive with parent instance
    """
    kms = boto3.client('kms', region_name=REGION)
    alias = "ncsnitro"
    user_input = get_user_input()
    encrypted_input = encrypt_string(user_input, alias, kms)
    server_request = prepare_server_request(encrypted_input)
    url = 'http://<EC2 Instance Private IP>:5001'
    x = requests.post(url, json = server_request)
    response_body = x.json()
    llm_response = decrypt_data(response_body["EncryptedData"], kms)
    print(llm_response)
 
if __name__ == '__main__':
    main()

  1. تشغيل تطبيق chatbot:
    • python3 chat.py

عند تشغيله، ستطلب الوحدة إدخال المستخدم وتتبع المخطط المعماري السابق لإنشاء استجابة آمنة.

قم بتشغيل السؤال الخاص والإجابة على chatbot

الآن بعد أن تم تشغيل Nitro Enclaves على مثيل EC2، يمكنك طرح أسئلة PHI وPII الخاصة بك بشكل أكثر أمانًا. لنلقي نظرة على مثال.

في بيئة Cloud9، نطرح سؤالاً على برنامج الدردشة الآلي الخاص بنا ونقدم اسم المستخدم الخاص بنا.

سؤال-لا يمكن-الوصول إلى-البريد الإلكتروني الخاص بي

الشكل 6 - طرح سؤال على برنامج الدردشة الآلية

يقوم AWS KMS بتشفير السؤال، الذي يبدو مثل لقطة الشاشة التالية.

سؤال مشفر

الشكل 7 – سؤال مشفر

ثم يتم إرساله إلى الجيب وطلبه من LLM المضمون. سيبدو سؤال وإجابة LLM مثل لقطة الشاشة التالية (النتيجة والاستجابة المشفرة مرئية داخل الجيب فقط في وضع التصحيح).

سؤال وجواب من LLM

الشكل 8 – الرد من LLM

يتم بعد ذلك تشفير النتيجة باستخدام AWS KMS وإعادتها إلى بيئة Cloud9 لفك تشفيرها.

الاستجابة النهائية التي تم فك تشفيرها

الشكل 9 - الاستجابة النهائية التي تم فك تشفيرها

تنظيف

أكمل الخطوات التالية لتنظيف مواردك:

  1. أوقف مثيل EC2 الذي تم إنشاؤه لإيواء منطقتك.
  2. احذف بيئة Cloud9.
  3. احذف مفتاح KMS.
  4. قم بإزالة دور مثيل EC2 وأذونات مستخدم IAM.

وفي الختام

في هذا المنشور، عرضنا كيفية استخدام Nitro Enclaves لنشر خدمة الأسئلة والإجابة على LLM التي ترسل وتستقبل معلومات PII وPHI بشكل أكثر أمانًا. تم نشر هذا على Amazon EC2، وتم دمج الجيوب مع AWS KMS مما يقيد الوصول إلى مفتاح KMS، لذلك يُسمح فقط لـ Nitro Enclaves والمستخدم النهائي باستخدام المفتاح وفك تشفير السؤال.

إذا كنت تخطط لتوسيع نطاق هذه البنية لدعم أحمال عمل أكبر، فتأكد من أن عملية اختيار النموذج تتوافق مع متطلبات النموذج الخاص بك مع موارد EC2. بالإضافة إلى ذلك، يجب عليك مراعاة الحد الأقصى لحجم الطلب والتأثير الذي سيحدثه على خادم HTTP ووقت الاستدلال مقابل النموذج. العديد من هذه المعلمات قابلة للتخصيص من خلال النموذج وإعدادات خادم HTTP.

أفضل طريقة لتحديد الإعدادات والمتطلبات المحددة لعبء العمل الخاص بك هي من خلال الاختبار باستخدام LLM المضبوط بدقة. على الرغم من أن هذا المنشور يتضمن فقط معالجة اللغة الطبيعية للبيانات الحساسة، إلا أنه يمكنك تعديل هذه البنية لدعم LLMs البديلة التي تدعم الصوت أو رؤية الكمبيوتر أو الوسائط المتعددة. يمكن تطبيق نفس مبادئ الأمان الموضحة هنا على البيانات بأي تنسيق. الموارد المستخدمة لإنشاء هذا المنشور متاحة على جيثب ريبو.

شارك كيف ستقوم بتكييف هذا الحل مع بيئتك في قسم التعليقات.


حول المؤلف

جاستن مايلز هو مهندس سحابي في قطاع التحديث الرقمي في Leidos التابع لمكتب التكنولوجيا. وفي أوقات فراغه، يستمتع بلعب الغولف والسفر.

ليف داليبرتي باحث في Leidos AI / ML Accelerator التابع لمكتب التكنولوجيا. يركز بحثهم على التعلم الآلي الذي يحافظ على الخصوصية.

كريس رينزو هو مهندس الحلول الأول في مؤسسة AWS Defense and Aerospace. خارج العمل، يستمتع بالتوازن بين الطقس الدافئ والسفر.

جو كوفبا يشغل منصب نائب الرئيس في قطاع التحديث الرقمي لدى Leidos. وفي أوقات فراغه، يستمتع بتحكيم مباريات كرة القدم ولعب الكرة اللينة.

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة