Розгортання LLM на AWS (SageMaker / Bedrock)

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Розгортання LLM на AWS (SageMaker / Bedrock)
Середній
~3-5 днів
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

Деплой LLM на AWS

AWS надає кілька сервісів для LLM-деплою: Amazon SageMaker (керований ML-сервіс), EC2 G/P інстанції (GPU VM), Amazon Bedrock (managed LLM API). Вибір залежить від вимог до контролю, вартості та операційного навантаження.

Amazon SageMaker Endpoints

SageMaker - керований сервіс: автоскейлінг, A/B тести, моніторинг із коробки. Платіть за комп'ютер, інфраструктуру управляє AWS.

import boto3
import json
from sagemaker.huggingface import HuggingFaceModel

# Деплой Llama-3-8B через SageMaker LMI (Large Model Inference)
hub = {
    "HF_MODEL_ID": "meta-llama/Llama-3-8b-instruct",
    "HF_TOKEN": "hf_xxx",
    "SM_NUM_GPUS": "1",
    "MAX_INPUT_LENGTH": "4096",
    "MAX_TOTAL_TOKENS": "8192",
    "MAX_BATCH_PREFILL_TOKENS": "32768",
    "HF_MODEL_QUANTIZE": "bitsandbytes",  # 4-bit quantization
}

model = HuggingFaceModel(
    image_uri="763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-tgi-inference:2.1.1-tgi1.4.2-gpu-py310-cu121-ubuntu22.04",
    env=hub,
    role="arn:aws:iam::123456789012:role/SageMakerRole",
)

predictor = model.deploy(
    initial_instance_count=1,
    instance_type="ml.g5.2xlarge",    # 1x A10G 24GB
    endpoint_name="llama3-8b-prod",
    container_startup_health_check_timeout=900,
)

Інвокація SageMaker Endpoint

import boto3
import json

runtime = boto3.client("sagemaker-runtime", region_name="us-east-1")

def invoke_llm(prompt: str, max_tokens: int = 512) -> str:
    payload = {
        "inputs": prompt,
        "parameters": {
            "max_new_tokens": max_tokens,
            "temperature": 0.7,
            "top_p": 0.9,
            "repetition_penalty": 1.1,
        }
    }

    response = runtime.invoke_endpoint(
        EndpointName="llama3-8b-prod",
        ContentType="application/json",
        Body=json.dumps(payload),
    )
    return json.loads(response["Body"].read())["generated_text"]

Автоскейлінг SageMaker

client = boto3.client("application-autoscaling", region_name="us-east-1")

# Регистрация ресурса
client.register_scalable_target(
    ServiceNamespace="sagemaker",
    ResourceId="endpoint/llama3-8b-prod/variant/AllTraffic",
    ScalableDimension="sagemaker:variant:DesiredInstanceCount",
    MinCapacity=1,
    MaxCapacity=10,
)

# Политика по загрузке GPU
client.put_scaling_policy(
    PolicyName="gpu-invocations-scaling",
    ServiceNamespace="sagemaker",
    ResourceId="endpoint/llama3-8b-prod/variant/AllTraffic",
    ScalableDimension="sagemaker:variant:DesiredInstanceCount",
    PolicyType="TargetTrackingScaling",
    TargetTrackingScalingPolicyConfiguration={
        "TargetValue": 5.0,  # target: 5 инвокаций на инстанцию в минуту
        "CustomizedMetricSpecification": {
            "MetricName": "InvocationsPerInstance",
            "Namespace": "AWS/SageMaker",
            "Dimensions": [
                {"Name": "EndpointName", "Value": "llama3-8b-prod"},
            ],
            "Statistic": "Average",
        },
        "ScaleInCooldown": 300,
        "ScaleOutCooldown": 60,
    },
)

EC2 G5/P4 деплой

Для повного контролю – EC2 з GPU AMI:

# Запуск G5.2xlarge (1x A10G 24GB)
aws ec2 run-instances \
  --image-id ami-0abcdef1234567890 \  # Deep Learning AMI GPU PyTorch 2.x
  --instance-type g5.2xlarge \
  --key-name my-key \
  --security-group-ids sg-xxx \
  --subnet-id subnet-xxx \
  --iam-instance-profile Name=EC2LLMRole \
  --block-device-mappings '[{"DeviceName":"/dev/sda1","Ebs":{"VolumeSize":200,"VolumeType":"gp3"}}]' \
  --user-data file://startup.sh

Spot Instances для batch inference

Spot Instances: до 70% економії, але з ризиком переривання. Підходять для batch inference (переробка черги), не для синхронного API.

# SageMaker Spot Training
from sagemaker.estimator import Estimator

estimator = Estimator(
    image_uri="...",
    instance_type="ml.p3.2xlarge",
    instance_count=1,
    use_spot_instances=True,
    max_wait=3600,          # максимальное ожидание spot
    max_run=1800,           # максимальное время обучения
    checkpoint_s3_uri="s3://bucket/checkpoints/",
)

Amazon Bedrock для managed LLM

Якщо не потрібні open source моделі - Bedrock надає Claude, Llama, Mistral як API:

bedrock = boto3.client("bedrock-runtime", region_name="us-east-1")

response = bedrock.invoke_model(
    modelId="anthropic.claude-3-5-sonnet-20241022-v2:0",
    contentType="application/json",
    accept="application/json",
    body=json.dumps({
        "anthropic_version": "bedrock-2023-05-31",
        "max_tokens": 1024,
        "messages": [{"role": "user", "content": "Hello"}]
    })
)

Bedrock: немає витрат на інфраструктуру, оплата за токенами. Підходить для нерегулярного навантаження.