Logo Zephyrnet

Suy luận mô hình ngôn ngữ lớn về dữ liệu bí mật bằng AWS Nitro Enclaves | Dịch vụ web của Amazon

Ngày:

Bài đăng này được đồng viết với Justin Miles, Liv d'Aliberti và Joe Kovba từ Leidos. 

Leidos là công ty dẫn đầu về giải pháp khoa học và công nghệ trong Fortune 500, làm việc để giải quyết một số thách thức khó khăn nhất trên thế giới trong các thị trường quốc phòng, tình báo, an ninh nội địa, dân sự và chăm sóc sức khỏe. Trong bài đăng này, chúng tôi thảo luận về cách Leidos làm việc với AWS để phát triển phương pháp suy luận mô hình ngôn ngữ lớn (LLM) bảo đảm quyền riêng tư bằng cách sử dụng Vỏ bọc AWS Nitro.

LLM được thiết kế để hiểu và tạo ra ngôn ngữ giống con người và được sử dụng trong nhiều ngành, bao gồm chính phủ, y tế, tài chính và sở hữu trí tuệ. LLM có khả năng ứng dụng rộng rãi, bao gồm chatbot, tạo nội dung, dịch ngôn ngữ, phân tích tình cảm, hệ thống trả lời câu hỏi, công cụ tìm kiếm và tạo mã. Việc đưa suy luận dựa trên LLM vào hệ thống cũng có khả năng gây ra các mối đe dọa về quyền riêng tư, bao gồm đánh cắp mô hình, vi phạm quyền riêng tư dữ liệu và thao túng dịch vụ dựa trên LLM ngoài ý muốn. Kiến trúc kỹ thuật cần được triển khai để đảm bảo rằng LLM không để lộ thông tin nhạy cảm trong quá trình suy luận.

Bài đăng này thảo luận về cách Nitro Enclaves có thể giúp bảo vệ việc triển khai mô hình LLM, đặc biệt là những mô hình sử dụng thông tin nhận dạng cá nhân (PII) hoặc thông tin sức khỏe được bảo vệ (PHI). Bài đăng này chỉ nhằm mục đích giáo dục và không nên được sử dụng trong môi trường sản xuất mà không có sự kiểm soát bổ sung.

Tổng quan về LLM và Nitro Enclaves

Trường hợp sử dụng tiềm năng là một chatbot truy vấn nhạy cảm dựa trên LLM được thiết kế để thực hiện dịch vụ hỏi đáp có chứa PII và PHI. Hầu hết các giải pháp chatbot LLM hiện tại đều thông báo rõ ràng cho người dùng rằng họ không nên đưa PII hoặc PHI khi nhập câu hỏi do lo ngại về bảo mật. Để giảm thiểu những lo ngại này và bảo vệ dữ liệu của khách hàng, chủ sở hữu dịch vụ chủ yếu dựa vào các biện pháp bảo vệ người dùng như sau:

  • Sự biên tập – Quá trình xác định và che giấu thông tin nhạy cảm như PII trong tài liệu, văn bản hoặc các dạng nội dung khác. Điều này có thể được thực hiện bằng dữ liệu đầu vào trước khi được gửi đến một mô hình hoặc LLM được đào tạo để tự động điều chỉnh lại các phản hồi của chúng.
  • Xác thực đa yếu tố – Một quy trình bảo mật yêu cầu người dùng cung cấp nhiều phương thức xác thực để xác minh danh tính của họ nhằm có quyền truy cập vào LLM.
  • Transport Layer Security (TLS) – Giao thức mật mã cung cấp khả năng liên lạc an toàn giúp tăng cường quyền riêng tư dữ liệu trong quá trình truyền giữa người dùng và dịch vụ LLM.

Mặc dù những biện pháp này nâng cao tình hình bảo mật của dịch vụ nhưng chúng không đủ để bảo vệ tất cả thông tin nhạy cảm của người dùng và những thông tin nhạy cảm khác có thể tồn tại mà người dùng không hề hay biết.

Trong trường hợp sử dụng ví dụ của chúng tôi, dịch vụ LLM được thiết kế để trả lời các câu hỏi về lợi ích chăm sóc sức khỏe của nhân viên hoặc cung cấp kế hoạch nghỉ hưu cá nhân. Hãy phân tích kiến ​​trúc mẫu sau đây và xác định các khu vực có rủi ro về quyền riêng tư dữ liệu.

llm-rủi ro-khu vực-sơ đồ

Hình 1 - Sơ đồ khu vực rủi ro về quyền riêng tư dữ liệu

Các lĩnh vực rủi ro tiềm ẩn như sau:

  1. Người dùng đặc quyền có quyền truy cập vào phiên bản chứa máy chủ. Những thay đổi vô ý hoặc trái phép đối với dịch vụ có thể dẫn đến việc dữ liệu nhạy cảm bị lộ theo những cách ngoài ý muốn.
  2. Người dùng phải tin tưởng rằng dịch vụ sẽ không tiết lộ hoặc lưu giữ thông tin nhạy cảm trong nhật ký ứng dụng.
  3. Những thay đổi đối với gói ứng dụng có thể gây ra những thay đổi đối với dịch vụ, dẫn đến việc lộ dữ liệu nhạy cảm.
  4. Người dùng đặc quyền có quyền truy cập vào phiên bản có quyền truy cập không hạn chế vào LLM được dịch vụ sử dụng. Những thay đổi có thể khiến thông tin không chính xác hoặc không chính xác được trả về cho người dùng.

Nitro Enclaves cung cấp thêm khả năng cách ly cho thiết bị của bạn Đám mây điện toán đàn hồi Amazon (Amazon EC2), bảo vệ dữ liệu đang sử dụng khỏi bị truy cập trái phép, bao gồm cả người dùng cấp quản trị viên. Trong kiến ​​trúc trước đó, một sự thay đổi ngoài ý muốn có thể khiến dữ liệu nhạy cảm vẫn tồn tại ở dạng bản rõ và vô tình bị tiết lộ cho người dùng có thể không cần truy cập vào dữ liệu đó. Với Nitro Enclaves, bạn tạo một môi trường tách biệt với phiên bản EC2 của mình, cho phép bạn phân bổ tài nguyên CPU và bộ nhớ cho khu vực đó. Vùng đất này là một máy ảo có mức độ hạn chế cao. Bằng cách chạy mã xử lý dữ liệu nhạy cảm trong vùng bao quanh, không có tiến trình nào của cấp độ gốc có thể xem dữ liệu vùng bao quanh.

Nitro Enclaves mang lại những lợi ích sau:

  • Cách ly bộ nhớ và CPU – Nó dựa vào Nitro Hypervisor để cách ly CPU và bộ nhớ của vùng này khỏi người dùng, ứng dụng và thư viện trên phiên bản gốc. Tính năng này giúp cách ly khu vực và phần mềm của bạn, đồng thời giảm đáng kể diện tích bề mặt cho các sự kiện ngoài ý muốn.
  • Máy ảo riêng biệt – Vỏ bọc là các máy ảo riêng biệt được gắn vào phiên bản EC2 để bảo vệ hơn nữa và xử lý an toàn dữ liệu có độ nhạy cảm cao.
  • Không có quyền truy cập tương tác – Vỏ bọc chỉ cung cấp kết nối ổ cắm cục bộ an toàn với phiên bản gốc của chúng. Họ không có bộ lưu trữ liên tục, quyền truy cập tương tác hoặc mạng bên ngoài.
  • Chứng thực mật mã – Ưu đãi của Nitro Enclaves chứng thực mật mã, một quy trình được sử dụng để chứng minh danh tính của một khu vực và xác minh rằng chỉ có mã được ủy quyền mới chạy trong khu vực của bạn.
  • Tích hợp AWS – Nitro Enclaves được tích hợp với Dịch vụ quản lý khóa AWS (AWS KMS), cho phép bạn giải mã các tệp đã được mã hóa bằng AWS KMS bên trong vùng bảo vệ. Trình quản lý chứng chỉ AWS (ACM) dành cho Nitro Enclaves cho phép bạn sử dụng chứng chỉ SSL/TLS công khai và riêng tư với các ứng dụng web và máy chủ chạy trên phiên bản EC2 với Nitro Enclaves.

Bạn có thể sử dụng các tính năng này do Nitro Enclaves cung cấp để giúp giảm thiểu rủi ro liên quan đến dữ liệu PII và PHI. Chúng tôi khuyên bạn nên đưa Nitro Enclaves vào dịch vụ LLM khi xử lý dữ liệu nhạy cảm của người dùng.

Tổng quan về giải pháp

Hãy cùng xem xét kiến ​​trúc của dịch vụ ví dụ, hiện bao gồm cả Nitro Enclaves. Bằng cách kết hợp Nitro Enclaves, như minh họa trong hình dưới đây, LLM trở thành một chatbot an toàn hơn để xử lý dữ liệu PHI hoặc PII.

llm-using-aws-nitro-enclaves-sơ đồ

Hình 2 – Sơ đồ tổng quan về giải pháp

Dữ liệu người dùng, bao gồm PII, PHI và các câu hỏi, vẫn được mã hóa trong suốt quá trình phản hồi yêu cầu khi ứng dụng được lưu trữ trong một khu vực. Các bước thực hiện trong quá trình suy luận như sau:

  1. Ứng dụng chatbot tạo thông tin đăng nhập AWS tạm thời và yêu cầu người dùng nhập câu hỏi. Câu hỏi có thể chứa PII hoặc PHI sau đó được mã hóa thông qua AWS KMS. Dữ liệu đầu vào được mã hóa của người dùng được kết hợp với thông tin xác thực tạm thời để tạo yêu cầu được mã hóa.
  2. Dữ liệu được mã hóa được gửi đến máy chủ HTTP do Flask lưu trữ dưới dạng yêu cầu POST. Trước khi chấp nhận dữ liệu nhạy cảm, điểm cuối này phải được định cấu hình cho HTTP.
  3. Ứng dụng khách nhận được yêu cầu POST và chuyển tiếp yêu cầu đó qua kênh cục bộ an toàn (ví dụ: vsock) đến ứng dụng máy chủ chạy bên trong Nitro Enclaves.
  4. Ứng dụng máy chủ Nitro Enclaves sử dụng thông tin xác thực tạm thời để giải mã yêu cầu, truy vấn LLM và tạo phản hồi. Các cài đặt dành riêng cho kiểu máy được lưu trữ trong các khu vực và được bảo vệ bằng chứng thực bằng mật mã.
  5. Ứng dụng máy chủ sử dụng thông tin xác thực tạm thời tương tự để mã hóa phản hồi.
  6. Phản hồi được mã hóa sẽ được trả lại cho ứng dụng chatbot thông qua ứng dụng khách dưới dạng phản hồi từ yêu cầu POST.
  7. Ứng dụng chatbot giải mã phản hồi bằng khóa KMS của họ và hiển thị văn bản gốc cho người dùng.

Điều kiện tiên quyết

Trước khi chúng tôi bắt đầu, bạn cần có các điều kiện tiên quyết sau để triển khai giải pháp:

Định cấu hình phiên bản EC2

Hoàn thành các bước sau để định cấu hình phiên bản EC2:

  1. Khởi chạy một r5.8xlarge Phiên bản EC2 sử dụng amzn2-ami-kernel-5.10-hvm-2.0.20230628.0-x86_64-gp2 AMI đã bật Nitro Enclaves.
  2. Cài đặt Nitro Enclaves CLI để xây dựng và chạy các ứng dụng Nitro Enclaves:
    • sudo amazon-linux-extras install aws-nitro-enclaves-cli -y
    • sudo yum install aws-nitro-enclaves-cli-devel -y
  3. Xác minh cài đặt Nitro Enclaves CLI:
    • nitro-cli –version
    • Phiên bản được sử dụng trong bài viết này là 1.2.2
  4. Cài đặt Git và Docker để xây dựng hình ảnh Docker và tải xuống ứng dụng từ GitHub. Thêm người dùng cá thể của bạn vào nhóm Docker ( là người dùng phiên bản IAM của bạn):
    • sudo yum install git -y
    • sudo usermod -aG ne <USER>
    • sudo usermod -aG docker <USER>
    • sudo systemctl start docker && sudo systemctl enable docker
  5. Bắt đầu và kích hoạt dịch vụ proxy vsock và bộ cấp phát Nitro Enclaves:
    • 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 sử dụng kết nối ổ cắm cục bộ được gọi là vsock để tạo kênh an toàn giữa phiên bản gốc và vùng bao quanh.

Sau khi tất cả các dịch vụ được khởi động và kích hoạt, hãy khởi động lại phiên bản để xác minh rằng tất cả các nhóm người dùng và dịch vụ đều đang chạy chính xác:

sudo shutdown -r now

Định cấu hình dịch vụ cấp phát Nitro Enclaves

Nitro Enclaves là một môi trường biệt lập chỉ định một phần CPU phiên bản và bộ nhớ để chạy khu vực đó. Với dịch vụ cấp phát Nitro Enclaves, bạn có thể cho biết số lượng CPU và dung lượng bộ nhớ sẽ được lấy từ phiên bản gốc để chạy enclave.

Sửa đổi tài nguyên dành riêng của khu vực bằng trình soạn thảo văn bản (đối với giải pháp của chúng tôi, chúng tôi phân bổ 8 CPU và 70,000 bộ nhớ MiB để cung cấp đủ tài nguyên):

vi /etc/nitro_enclaves/allocatory.yaml

AWS-Nitro-Enclaves-Allocator-Service-Config

Hình 3 – Cấu hình dịch vụ phân bổ AWS Nitro Enclaves

Sao chép dự án

Sau khi định cấu hình phiên bản EC2, bạn có thể tải mã xuống để chạy chatbot nhạy cảm có LLM bên trong Nitro Enclaves.

Bạn cần cập nhật thông tin server.py tệp có ID khóa KMS thích hợp mà bạn đã tạo lúc đầu để mã hóa phản hồi LLM.

  1. Sao chép dự án GitHub:
    • cd ~/ && git clone https://<THE_REPO.git>
  2. Điều hướng đến thư mục dự án để xây dựng enclave_base Hình ảnh Docker có chứa Bộ công cụ phát triển phần mềm Nitro Enclaves (SDK) đối với các tài liệu chứng thực mật mã từ Nitro Hypervisor (bước này có thể mất tới 15 phút):
    • cd /nitro_llm/enclave_base
    • docker build ./ -t “enclave_base”

Lưu LLM trong phiên bản EC2

Chúng tôi đang sử dụng Bloom 560m LLM mã nguồn mở để xử lý ngôn ngữ tự nhiên nhằm tạo ra phản hồi. Mô hình này không được tinh chỉnh theo PII và PHI, nhưng chứng minh cách LLM có thể tồn tại bên trong một khu vực bao quanh. Mô hình cũng cần được lưu trên phiên bản gốc để có thể sao chép nó vào vùng bao quanh thông qua Dockerfile.

  1. Điều hướng đến dự án:
    • cd /nitro_llm
  2. Cài đặt các yêu cầu cần thiết để lưu mô hình cục bộ:
    • pip3 install requirements.txt
  3. Chạy save_model.py ứng dụng để lưu mô hình trong /nitro_llm/enclave/bloom danh mục:
    • python3 save_model.py

Build và chạy image Nitro Enclaves

Để chạy Nitro Enclaves, bạn cần tạo tệp hình ảnh kèm theo (EIF) từ hình ảnh Docker của ứng dụng. Dockerfile nằm trong thư mục enclave chứa các tệp, mã và LLM sẽ chạy bên trong enclave.

Việc xây dựng và vận hành khu vực này sẽ mất nhiều phút để hoàn thành.

  1. Điều hướng đến thư mục gốc của dự án:
    • cd /nitro_llm
  2. Xây dựng tập tin hình ảnh kèm theo như enclave.eif:
    • nitro-cli build-enclave --docker-uri enclave:latest --output-file enclave.eif
AWS-Nitro-Enclave-Build-Result

Hình 4 – Kết quả xây dựng AWS Nitro Enclaves

Khi khu vực được xây dựng, một loạt các bảng băm và thanh ghi cấu hình nền tảng (PCR) duy nhất sẽ được tạo. PCR là phép đo liền kề để chứng minh danh tính của phần cứng và ứng dụng. Những PCR này sẽ được yêu cầu để chứng thực mật mã và được sử dụng trong bước cập nhật chính sách khóa KMS.

  1. Chạy khu vực này với các tài nguyên từ allocator.service (thêm --attach-console đối số ở cuối sẽ chạy phần bao quanh ở chế độ gỡ lỗi):
    • nitro-cli run-enclave --cpu-count 8 --memory 70000 --enclave-cid 16 --eif-path enclave.eif

Bạn cần phân bổ ít nhất bốn lần kích thước tệp EIF. Điều này có thể được sửa đổi trong allocator.service từ các bước trước đó.

  1. Xác minh enclave đang chạy bằng lệnh sau:
    • nitro-cli describe-enclaves
AWS-Nitro-Enclave-Mô tả-Lệnh-Phản hồi

Hình 5 – Lệnh mô tả AWS Nitro Enclave

Cập nhật chính sách khóa KMS

Hoàn tất các bước sau để cập nhật chính sách khóa KMS của bạn:

  1. Trên bảng điều khiển AWS KMS, chọn Các khóa do khách hàng quản lý trong khung điều hướng.
  2. Tìm kiếm khóa mà bạn đã tạo làm điều kiện tiên quyết.
  3. Chọn Chỉnh sửa về chính sách then chốt.
  4. Cập nhật chính sách chính với thông tin sau:
    • ID tài khoản của bạn
    • Tên người dùng IAM của bạn
    • Vai trò phiên bản môi trường Cloud9 được cập nhật
    • Hoạt động kms:Encryptkms:Decrypt
    • Đưa PCR (ví dụ: PCR0, PCR1, PCR2) vào chính sách chính của bạn kèm theo câu lệnh điều kiện

Xem mã chính sách quan trọng sau:

{
   "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":""
            }
         }
      }
   ]
}

Lưu ứng dụng chatbot

Để bắt chước một ứng dụng chatbot truy vấn nhạy cảm nằm ngoài tài khoản AWS, bạn cần lưu chatbot.py app và chạy nó trong môi trường Cloud9. Môi trường Cloud9 của bạn sẽ sử dụng vai trò phiên bản của nó đối với thông tin xác thực tạm thời để tách các quyền khỏi EC2 đang chạy vùng bảo vệ. Hoàn thành các bước sau:

  1. Trên bảng điều khiển Cloud9, hãy mở môi trường bạn đã tạo.
  2. Sao chép đoạn mã sau vào một tệp mới như chatbot.py vào thư mục chính.
  3. Cài đặt các module cần thiết:
    • pip install boto3
    • Pip install requests
  4. Trên bảng điều khiển Amazon EC2, hãy lưu ý IP được liên kết với phiên bản Nitro Enclaves của bạn.
  5. Cập nhật biến URL trong 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. Chạy ứng dụng chatbot:
    • python3 chat.py

Khi nó chạy, thiết bị đầu cuối sẽ yêu cầu đầu vào của người dùng và tuân theo sơ đồ kiến ​​trúc trước đó để tạo ra phản hồi an toàn.

Chạy chatbot hỏi đáp riêng tư

Giờ đây, Nitro Enclaves đã được thiết lập và chạy trên phiên bản EC2, bạn có thể đặt câu hỏi về PHI và PII cho chatbot của mình một cách an toàn hơn. Hãy xem một ví dụ.

Trong môi trường Cloud9, chúng tôi đặt câu hỏi cho chatbot và cung cấp tên người dùng.

câu hỏi-không thể truy cập-email của tôi

Hình 6 – Đặt câu hỏi cho Chat Bot

AWS KMS mã hóa câu hỏi trông giống như ảnh chụp màn hình sau.

câu hỏi được giải mã

Hình 7 – Câu hỏi được mã hóa

Sau đó, nó được gửi đến khu vực xung quanh và yêu cầu LLM được bảo mật. Câu hỏi và câu trả lời của LLM sẽ giống như ảnh chụp màn hình sau (kết quả và phản hồi được mã hóa chỉ hiển thị bên trong khu vực ở chế độ gỡ lỗi).

câu hỏi-trả lời-từ-llm

Hình 8 – Phản hồi từ LLM

Sau đó, kết quả được mã hóa bằng AWS KMS và quay trở lại môi trường Cloud9 để giải mã.

phản hồi được giải mã cuối cùng

Hình 9 – Phản hồi được giải mã cuối cùng

Làm sạch

Hoàn thành các bước sau để dọn sạch tài nguyên của bạn:

  1. Dừng phiên bản EC2 được tạo để chứa khu vực của bạn.
  2. Xóa môi trường Cloud9.
  3. Xóa khóa KMS.
  4. Xóa vai trò phiên bản EC2 và quyền của người dùng IAM.

Kết luận

Trong bài đăng này, chúng tôi đã giới thiệu cách sử dụng Nitro Enclaves để triển khai dịch vụ trả lời và câu hỏi LLM nhằm gửi và nhận thông tin PII và PHI một cách an toàn hơn. Điều này đã được triển khai trên Amazon EC2 và các vùng được tích hợp với AWS KMS hạn chế quyền truy cập vào khóa KMS, vì vậy chỉ Nitro Enclaves và người dùng cuối mới được phép sử dụng khóa và giải mã câu hỏi.

Nếu bạn dự định mở rộng kiến ​​trúc này để hỗ trợ khối lượng công việc lớn hơn, hãy đảm bảo quy trình lựa chọn mô hình phù hợp với yêu cầu mô hình của bạn với tài nguyên EC2. Ngoài ra, bạn phải xem xét kích thước yêu cầu tối đa và tác động nào sẽ có đối với máy chủ HTTP cũng như thời gian suy luận đối với mô hình. Nhiều tham số trong số này có thể tùy chỉnh thông qua cài đặt mô hình và máy chủ HTTP.

Cách tốt nhất để xác định các cài đặt và yêu cầu cụ thể cho khối lượng công việc của bạn là thông qua thử nghiệm bằng LLM được tinh chỉnh. Mặc dù bài đăng này chỉ bao gồm việc xử lý ngôn ngữ tự nhiên của dữ liệu nhạy cảm, nhưng bạn có thể sửa đổi kiến ​​trúc này để hỗ trợ các LLM thay thế hỗ trợ âm thanh, thị giác máy tính hoặc đa phương thức. Các nguyên tắc bảo mật tương tự được nêu ở đây có thể được áp dụng cho dữ liệu ở bất kỳ định dạng nào. Các tài nguyên được sử dụng để xây dựng bài đăng này có sẵn trên Repo GitHub.

Chia sẻ cách bạn sẽ điều chỉnh giải pháp này cho phù hợp với môi trường của mình trong phần bình luận.


Về các tác giả

Justin Miles là một kỹ sư đám mây trong Lĩnh vực Hiện đại hóa Kỹ thuật số Leidos thuộc Văn phòng Công nghệ. Trong thời gian rảnh rỗi, anh thích chơi gôn và đi du lịch.

Liv d'Aliberti là một nhà nghiên cứu trong Máy gia tốc AI/ML của Leidos thuộc Văn phòng Công nghệ. Nghiên cứu của họ tập trung vào học máy bảo vệ quyền riêng tư.

Chris Renzo là Kiến trúc sư giải pháp cấp cao trong tổ chức Hàng không vũ trụ và Quốc phòng AWS. Ngoài công việc, anh ấy thích sự cân bằng giữa thời tiết ấm áp và việc đi du lịch.

Joe Kovba là Phó Chủ tịch trong Lĩnh vực Hiện đại hóa Kỹ thuật số Leidos. Khi rảnh rỗi, anh thích làm trọng tài các trận bóng đá và chơi bóng mềm.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img