O Que É Voxtral: Capacidades Multimodais Integradas
Os modelos Voxtral da Mistral AI marcam um avanço significativo no processamento simultâneo de texto e áudio. Ao contrário de soluções convencionais que exigem etapas separadas para transcrever e processar dados, o Voxtral integra essas funcionalidades em um único framework coeso.
A família Voxtral apresenta dois modelos específicos, cada um otimizado para cenários distintos. O Voxtral-Mini-3B-2507 é uma versão compacta com 3 bilhões de parâmetros, direcionado a aplicações onde velocidade e economia de recursos computacionais são prioridades. O Voxtral-Small-24B-2507, com 24 bilhões de parâmetros baseados no Mistral Small 3, atende casos corporativos mais complexos, proporcionando recursos avançados de conversação, execução de funções diretamente por comando de voz e processamento sofisticado em múltiplos idiomas.
Ambos suportam contexto de áudio estendido (entre 30 e 40 minutos), identificação automática de idioma e mantêm uma janela de contexto de 32 mil tokens. Disponibilizados sob licença Apache 2.0, permitem tanto uso comercial quanto em pesquisa.
Processamento Multimodal Unificado
Um dos diferenciais do Voxtral é processar fala e texto em um único fluxo de trabalho. Isso elimina a necessidade de etapas separadas de transcrição, reduzindo latência e complexidade da arquitetura. O modelo extrai contexto e sentimento diretamente do áudio, e gerencia vários arquivos de áudio dentro da mesma conversa.
O Voxtral Small acrescenta capacidade de chamada de funções, permitindo que comandos falados se convertam em ações executáveis. Isso viabiliza assistentes de voz contextualizados, transcrição automática e extração de insights em reuniões, processamento inteligente de chamadas para suporte ao cliente, ferramentas acessíveis e sistemas de comunicação multilíngue para empresas globais.
Hospedagem no Amazon SageMaker Com Contêiner Personalizado
A solução combina Amazon SageMaker AI com vLLM usando a abordagem Bring Your Own Container (BYOC). O vLLM é uma biblioteca otimizada para servir grandes modelos de linguagem, oferecendo atenção paginada para melhor gestão de memória e paralelismo tensorial para distribuir modelos entre várias GPUs.
A capacidade BYOC do SageMaker permite implantação com imagens Docker personalizadas. Isso oferece controle de versão compatível com vLLM 0.10.0+, flexibilidade para otimizar requisitos específicos do Voxtral (incluindo bibliotecas de áudio e gerenciamento customizado de memória), além de suportar ambas as variantes através de ajustes simples de configuração.
Arquitetura da Solução
O notebook do SageMaker atua como ponto central de orquestração. Gerencia a construção e envio de imagens Docker personalizadas para o Registro de Contêineres (Amazon ECR), coordena fluxos de configuração e implementação, e oferece capacidades de teste e validação.
Um componente essencial é o contêiner Docker personalizado que estende o servidor vLLM oficial com bibliotecas especializadas para processar áudio (librosa, soundfile, pydub) e mistral_common para tokenização do Voxtral. O Amazon Elastic Container Registry (ECR) fornece armazenamento seguro e distribuição escalável dessa imagem, integrando-se aos mecanismos de implantação do SageMaker.
O endpoint de inferência do SageMaker funciona como ambiente de produção, oferecendo escalonamento automático e distribuição de carga. Para Voxtral-Mini, a recomendação é ml.g6.4xlarge; para Voxtral-Small, ml.g6.12xlarge. O Amazon Simple Storage Service (S3) armazena três arquivos críticos: o manipulador de inferência personalizado (model.py), configuração do modelo (serving.properties) e dependências (requirements.txt). Essa abordagem modular permite separar configuração de imagens de contêiner e facilita mudanças sem reconstrução completa.

Padrões de Uso Suportados
A solução atende múltiplos padrões de uso alinhados a necessidades organizacionais variadas. O processamento apenas de texto utiliza a API padrão de conclusão de chat para IA conversacional. O modo transcription-only oferece transcrição precisa de arquivos de áudio, ideal para anotações de reuniões. Aplicações sofisticadas combinam inteligência de áudio e texto, onde o áudio fornece contexto e texto entrega instruções específicas. O padrão avançado envolve chamada de funções a partir de áudio, onde comandos falados disparam ações automatizadas—por exemplo, “Calcule a raiz quadrada de 144” executa automaticamente a ferramenta de calculadora.
Este guia também demonstra integração do Voxtral implantado no SageMaker com Strands Agents para construir aplicações agentic com código mínimo.
Preparação Técnica Para Implantação
Antes de iniciar, certifique-se de possuir os seguintes pré-requisitos:
Requisitos de software:
- vLLM >= 0.10.0
- mistral_common >= 1.8.1
Configuração da AWS:
- Uma conta AWS ativa
- Notebook SageMaker com ml.m5.4xlarge e 100 GB de armazenamento
- AWS Identity and Access Management (IAM) adequadas. Adicione a política EC2InstanceProfileForImageBuilderECRContainerBuilds ao papel de execução do SageMaker
- Quotas de serviço: instâncias ml.g6.4xlarge (Voxtral-Mini) e ml.g6.12xlarge (Voxtral-Small) disponíveis em sua região. Se necessário, solicite um aumento de cota
Processo de Implantação
Para implantar os modelos Voxtral, siga estas etapas:
1. Baixe o código do repositório
git clone https://github.com/aws-samples/mistral-on-aws.git
cd mistral-on-aws/Mistral\ Voxtral/Voxtral-vllm-byoc
2. Construa seu contêiner
chmod +x build_and_push.sh
./build_and_push.sh
3. Configure o modelo em code/serving.properties
Para Voxtral-Mini:
option.model_id=mistralai/Voxtral-Mini-3B-2507
option.tensor_parallel_degree=1
Para Voxtral-Small:
option.model_id=mistralai/Voxtral-Small-24B-2507
option.tensor_parallel_degree=4
4. Execute a implantação
Abra e execute Voxtral-vLLM-BYOC-SageMaker.ipynb para implantar seu endpoint e testar com recursos de texto, áudio e chamada de funções.
Configuração do Contêiner Docker
O repositório GitHub contém o Dockerfile completo. Os componentes principais são:
# Custom vLLM Container for Voxtral Model Deployment on SageMaker
FROM --platform=linux/amd64 vllm/vllm-openai:latest
# Set environment variables for SageMaker
ENV MODEL_CACHE_DIR=/opt/ml/model
ENV TRANSFORMERS_CACHE=/tmp/transformers_cache
ENV HF_HOME=/tmp/hf_home
ENV VLLM_WORKER_MULTIPROC_METHOD=spawn
# Install audio processing dependencies
RUN pip install --no-cache-dir \
"mistral_common>=1.8.1" \
librosa>=0.10.2 \
soundfile>=0.12.1 \
pydub>=0.25.1
Este Dockerfile estende o servidor vLLM oficial com capacidades específicas do Voxtral. A abordagem separa infraestrutura de lógica de negócio: o contêiner permanece genérico enquanto o SageMaker injeta dinamicamente código específico do modelo a partir do S3 em tempo de execução.
Configurações do Modelo
As configurações estão no arquivo serving.properties. Os parâmetros principais incluem:
# Model configuration
option.model_id=mistralai/Voxtral-Small-24B-2507
option.tensor_parallel_degree=4
option.dtype=bfloat16
# Voxtral-specific settings (as per official documentation)
option.tokenizer_mode=mistral
option.config_format=mistral
option.load_format=mistral
option.trust_remote_code=true
# Audio processing (Voxtral specifications)
option.limit_mm_per_prompt=audio:8
option.mm_processor_kwargs={"audio_sampling_rate": 16000, "audio_max_length": 1800.0}
# Performance optimizations (vLLM v0.10.0+ features)
option.enable_chunked_prefill=true
option.enable_prefix_caching=true
option.use_v2_block_manager=true
Esta configuração implementa otimizações específicas do Voxtral, permitindo processamento de até oito arquivos de áudio por prompt com suporte a transcrição de 30 minutos, além de utilizar mecanismos avançados de cache para melhorar desempenho de inferência.
Manipulador de Inferência Personalizado
O arquivo model.py implementa um servidor compatível com SageMaker. Os componentes-chave são:
# FastAPI app for SageMaker compatibility
app = FastAPI(title="Voxtral vLLM Inference Server", version="1.1.0")
model_engine = None
# vLLM Server Initialization for Voxtral
def start_vllm_server():
"""Start vLLM server with Voxtral-specific configuration"""
config = load_serving_properties()
cmd = [
"vllm",
"serve",
config.get("option.model_id"),
"--tokenizer-mode", "mistral",
"--config-format", "mistral",
"--tensor-parallel-size", config.get("option.tensor_parallel_degree"),
"--host", "127.0.0.1",
"--port", "8000"
]
vllm_server_process = subprocess.Popen(cmd, env=vllm_env)
server_ready = wait_for_server()
return server_ready
@app.post("/invocations")
async def invoke_model(request: Request):
"""Handle chat, transcription, and function calling"""
# Transcription requests
if "transcription" in request_data:
audio_source = request_data["transcription"]["audio"]
return transcribe_audio(audio_source)
# Chat requests with multimodal support
messages = format_messages_for_openai(request_data["messages"])
tools = request_data.get("tools")
# Generate via vLLM OpenAI client
response = openai_client.chat.completions.create(
model=model_config["model_id"],
messages=messages,
tools=tools if supports_function_calling() else None
)
return response
Este manipulador cria um servidor baseado em FastAPI que se integra ao servidor vLLM, processando conteúdo multimodal incluindo áudio codificado em base64 e URLs de áudio, além de suportar chamadas de funções.
Código de Implantação no SageMaker
O notebook Voxtral-vLLM-BYOC-SageMaker.ipynb orquestra todo o processo de implantação:
import boto3
import sagemaker
from sagemaker.model import Model
# Initialize SageMaker session
sagemaker_session = sagemaker.Session()
role = sagemaker.get_execution_role()
bucket = "your-s3-bucket"
# Upload model artifacts to S3
byoc_config_uri = sagemaker_session.upload_data(
path="./code",
bucket=bucket,
key_prefix="voxtral-vllm-byoc/code"
)
# Configure custom container image
account_id = boto3.client('sts').get_caller_identity()['Account']
region = boto3.Session().region_name
image_uri = f"{account_id}.dkr.ecr.{region}.amazonaws.com/voxtral-vllm-byoc:latest"
# Create SageMaker model
voxtral_model = Model(
image_uri=image_uri,
model_data={
"S3DataSource": {
"S3Uri": f"{byoc_config_uri}/",
"S3DataType": "S3Prefix",
"CompressionType": "None"
}
},
role=role,
env={
'MODEL_CACHE_DIR': '/opt/ml/model',
'TRANSFORMERS_CACHE': '/tmp/transformers_cache',
'SAGEMAKER_BIND_TO_PORT': '8080'
}
)
# Deploy to endpoint
predictor = voxtral_model.deploy(
initial_instance_count=1,
instance_type="ml.g6.12xlarge",
container_startup_health_check_timeout=1200,
wait=True
)
Exemplos de Uso do Modelo
O repositório GitHub contém o código completo. Aqui apresentamos exemplos para diferentes cenários.
Apenas texto
Uma conversa básica onde o usuário envia uma consulta e recebe resposta estruturada:
payload = {
"messages": [
{
"role": "user",
"content": "Hello! Can you tell me about the advantages of using vLLM for model inference?"
}
],
"max_tokens": 200,
"temperature": 0.2,
"top_p": 0.95
}
response = predictor.predict(payload)
Apenas transcrição
Este exemplo foca em transcrição de fala em texto. O modelo processa URL de arquivo de áudio ou arquivo em base64, retornando apenas o texto transcrito:
payload = {
"transcription": {
"audio": "https://audiocdn.frenchtoday.com/file/ft-public-files/audiobook-samples/AMPFE/AMP%20FE%20Ch%2002%20Story%20Slower.mp3",
"language": "fr",
"temperature": 0.0
}
}
response = predictor.predict(payload)
Entendimento de texto e áudio
Combinação de instruções em texto e entrada de áudio para processamento multimodal. O modelo segue comandos escritos enquanto analisa o arquivo de áudio em uma única passada de inferência:
payload = {
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Can you summarise this audio file"
},
{
"type": "audio",
"path": "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/obama.mp3"
}
]
}
],
"max_tokens": 300,
"temperature": 0.2,
"top_p": 0.95
}
response = predictor.predict(payload)
Uso de ferramentas
Este exemplo demonstra chamada de funções, permitindo que o modelo interprete comandos de voz e execute ferramentas predefinidas:
WEATHER_TOOL = {
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather for a specific location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"format": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "The temperature unit to use."
}
},
"required": ["location", "format"]
}
}
}
def mock_weather(location, format="celsius"):
"""Always returns sunny weather at 25°C/77°F"""
temp = 77 if format.lower() == "fahrenheit" else 25
unit = "°F" if format.lower() == "fahrenheit" else "°C"
return f"It's sunny in {location} with {temp}{unit}"
payload = {
"messages": [
{
"role": "user",
"content": [
{
"type": "audio",
"path": "https://huggingface.co/datasets/patrickvonplaten/audio_samples/resolve/main/fn_calling.wav"
}
]
}
],
"temperature": 0.2,
"top_p": 0.95,
"tools": [WEATHER_TOOL]
}
response = predictor.predict(payload)
Integrando Com Strands Agents
O exemplo a seguir mostra como integrar Voxtral com o framework Strands para criar agentes inteligentes capazes de utilizar múltiplas ferramentas. O agente seleciona e executa ferramentas apropriadas (calculadora, operações com arquivos ou comandos shell) com base em consultas de usuário:
# SageMaker integration with Strands agents
from strands import Agent
from strands.models.sagemaker import SageMakerAIModel
from strands_tools import calculator, current_time, file_read, shell
model = SageMakerAIModel(
endpoint_config={
"endpoint_name": endpoint_name,
"region_name": "us-west-2",
},
payload_config={
"max_tokens": 1000,
"temperature": 0.7,
"stream": False,
}
)
agent = Agent(model=model, tools=[calculator, current_time, file_read, shell])
response = agent("What is the square root of 12?")
Limpeza de Recursos
Após concluir os experimentos, delete os endpoints do SageMaker criados para evitar custos desnecessários:
# Delete SageMaker endpoint
print(f" Deleting endpoint: {endpoint_name}")
predictor.delete_endpoint(delete_endpoint_config=True)
print(" Endpoint deleted successfully")
Considerações Finais
A abordagem apresentada demonstra como hospedar os modelos Voxtral da Mistral AI no SageMaker utilizando a estratégia BYOC. A solução é pronta para produção, aproveitando o framework vLLM mais recente e as otimizações do Voxtral para ambas as variantes Mini e Small.
A arquitetura suporta todo o espectro de capacidades do Voxtral: conversas apenas com texto, transcrição de áudio, entendimento multimodal sofisticado e chamada de funções a partir de entrada de voz. Por seu design flexível, é possível alternar entre Voxtral-Mini e Voxtral-Small através de simples atualizações de configuração, sem reconstruir contêineres.
Para aprofundar sua experiência, experimente o código completo disponível no repositório GitHub para hospedar o Voxtral no SageMaker e comece a construir suas próprias aplicações habilitadas para voz. Explore todo o potencial do Voxtral visitando o site oficial da Mistral para conhecer capacidades detalhadas, benchmarks de desempenho e especificações técnicas. Por fim, explore o framework Strands Agents para criar aplicações agentic que executem fluxos de trabalho complexos de forma integrada.
Fonte
Deploy Mistral AI’s Voxtral on Amazon SageMaker AI (https://aws.amazon.com/blogs/machine-learning/deploy-mistral-ais-voxtral-on-amazon-sagemaker-ai/)
Leave a Reply