Развёртывание 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 тесты, мониторинг из коробки. Платите за compute, инфраструктуру управляет 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: нет затрат на инфраструктуру, оплата по токенам. Подходит для нерегулярной нагрузки.