Learn AI with Python · Aula

Carregando e disponibilizando modelos de aprendizado de máquina

Carregamento do modelo joblib/keras na inicialização, inferência segura para threads e endpoints de previsão em lote.

Aula 3 de 413 etapas

Carregando e disponibilizando modelos de aprendizado de máquina é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.

O problema do carregamento

Carregar um modelo do disco é lento. Se você o recarregar a cada solicitação, a latência dispara. A solução: carregar o modelo uma vez na inicialização e reutilizá-lo para todas as solicitações.

O evento de inicialização

O gancho @app.on_event("startup") é executado uma vez quando o servidor inicia, sendo o local perfeito para carregar o modelo antes que qualquer solicitação chegue.

from fastapi import FastAPI
import joblib

app = FastAPI()

@app.on_event("startup")
def load_model():
    app.state.model = joblib.load("model.joblib")

app.state para armazenamento seguro para threads

app.state é o local recomendado para armazenar objetos compartilhados, como o modelo. Armazená-lo uma vez na inicialização e apenas lê-lo durante as solicitações evita os problemas de variáveis globais mutáveis no nível do módulo.

from fastapi import Request

@app.post("/predict")
def predict(req: PredictRequest, request: Request):
    model = request.app.state.model
    return {"prediction": model.predict([req.features])[0]}

Por que não usar uma variável global?

Uma variável global simples do módulo funciona, mas vincula o carregamento ao momento da importação e é mais difícil de testar ou substituir. app.state vincula o ciclo de vida do objeto à aplicação, o que é mais limpo e segue o padrão recomendado pelo FastAPI.

A abordagem moderna com lifespan

Versões mais recentes do FastAPI substituem on_event por um gerenciador de contexto lifespan, que cuida da inicialização e do encerramento em um único lugar.

from contextlib import asynccontextmanager

@asynccontextmanager
async def lifespan(app):
    app.state.model = joblib.load("model.joblib")  # startup
    yield
    app.state.model = None                          # shutdown

app = FastAPI(lifespan=lifespan)

Aquecimento do modelo

A primeira previsão costuma ser lenta porque as estruturas são inicializadas de forma tardia na primeira chamada. Aqueça o modelo na inicialização com uma previsão fictícia para que a primeira solicitação real do usuário já seja rápida.

@app.on_event("startup")
def load_and_warm():
    app.state.model = joblib.load("model.joblib")
    app.state.model.predict([[0.0, 0.0, 0.0, 0.0]])  # warm-up

Por que o aquecimento é importante

Sem aquecimento, a primeira solicitação após a implantação pode ser várias vezes mais lenta, prejudicando a latência de cauda e possivelmente fazendo as verificações de integridade falharem. Uma única inferência fictícia na inicialização assume esse custo fora do caminho crítico.

Um ponto de acesso de previsão em lote

Prever muitas linhas em uma única chamada é muito mais eficiente do que fazer várias chamadas individuais, pois os modelos vetorizam os dados em um lote. Aceite uma lista de vetores de atributos e retorne uma lista de previsões.

class BatchRequest(BaseModel):
    items: list[list[float]]

@app.post("/predict/batch")
def predict_batch(req: BatchRequest, request: Request):
    model = request.app.state.model
    preds = model.predict(req.items)
    return {"predictions": preds.tolist()}

Individual versus em lote

  • Individual: uma entrada, menor latência por chamada, clientes simples.
  • Em lote: muitas entradas de uma vez, taxa de transferência muito maior, ideal para pontuação offline.

Oferecer as duas opções atende a casos de uso em tempo real e em massa.

Lendo o estado nos pontos de acesso

Cada ponto de acesso lê o modelo compartilhado por meio de request.app.state.model, sem nunca recarregá-lo, para que todas as solicitações compartilhem uma única instância na memória.

Juntando tudo

Uma configuração pronta para produção: carregue e aqueça o modelo em lifespan/inicialização, armazene-o em app.state e disponibilize pontos de acesso de previsão individual e em lote que leiam o estado. Isso minimiza a latência e maximiza a taxa de transferência.

Verificação rápida

Teste seus conhecimentos sobre disponibilização de modelos.

Recapitulação

Você carregou o modelo uma única vez por meio de inicialização/lifespan, armazenou-o em app.state para reutilização segura entre threads, adicionou uma previsão fictícia de aquecimento e disponibilizou um ponto de acesso em lote para aumentar a taxa de transferência. Próximo assunto: conteinerização da API.

Grátis para começar

Aprenda Python com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
53
Aulas
225

Perguntas Frequentes

A aula “Carregando e disponibilizando modelos de aprendizado de máquina” é grátis?

Sim — o texto completo de “Carregando e disponibilizando modelos de aprendizado de máquina” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.

O que vou aprender em “Carregando e disponibilizando modelos de aprendizado de máquina”?

Carregamento do modelo joblib/keras na inicialização, inferência segura para threads e endpoints de previsão em lote. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Learn AI with Python?

Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Carregando e disponibilizando modelos de aprendizado de máquina”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Learn AI with Python?

Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos de FastAPI para engenheiros de aprendizado de máquina
  2. Esquemas Pydantic para requisições e respostas
  3. Carregando e disponibilizando modelos de aprendizado de máquina
  4. Conteinerização da API do modelo
← Voltar para Learn AI with Python