📊 Introdução ao Metadata Service (MDS)
O Metadata Service (MDS) é uma solução inovadora que visa solucionar o problema de fragmentação de ecossistema ML, proporcionando um grafo de ciclo de vida de modelos que unifica metadados heterogêneos em tempo real. Com o MDS, é possível superar os desafios impostos pela falta de linhagem, ausência de descoberta de ativos e dependências ocultas entre modelos, features e experimentos. Além disso, o MDS fornece uma abordagem escalável e flexível para gerenciar metadados, permitindo que os desenvolvedores e cientistas de dados trabalhem de forma mais eficiente e eficaz.
Arquitetura e Infraestrutura de Dados
A arquitetura do MDS é baseada em um modelo de dados unificado, que converte esquemas heterogêneos de sistemas de origem em um modelo unificado. Isso é alcançado por meio da utilização de um padrão de identificação, como o URI de Identificação (AIP), que garante a unicidade global dos componentes. Além disso, o MDS emprega um sistema de armazenamento e indexação, como o Datomic e o Elasticsearch, para armazenar e recuperar os metadados de forma eficiente. A escolha dessas tecnologias permite que o MDS ofereça uma solução escalável e performática para gerenciar metadados.
Pipeline de Ingestão e Processamento
O pipeline de ingestão e processamento do MDS é responsável por coletar e processar os eventos de mudança nos sistemas de origem. Isso é feito por meio de protocolos como o Kafka e o AWS SNS/SQS, que fornecem notificações de mudança em tempo real. O MDS então valida o esquema do evento e consulta a API da fonte de origem para obter o estado atual, garantindo a independência da ordem dos eventos e a resiliência a perda ou desordem de mensagens. Esse processo é fundamental para garantir a consistência e a precisão dos metadados.
Métricas e Casos de Uso de Consultas
O MDS fornece uma variedade de métricas e casos de uso de consultas para ajudar a entender a linhagem e as dependências entre os modelos, features e experimentos. Isso inclui a descoberta de quais features existem, quais fontes de dados geram features para um modelo, e quais testes A/B utilizam um modelo específico. Além disso, o MDS permite a análise de impacto, identificando quais modelos falharão se uma feature for alterada, e quem é o proprietário de um modelo ou feature. Essas métricas e casos de uso são fundamentais para garantir que os modelos sejam desenvolvidos, implantados e mantidos de forma eficaz e segura.
🔍 Abstrações do Sistema (Vocabulário)
URI de Identificação (AIP)
O sistema utiliza um conceito chamado URI de Identificação (AIP) para garantir a unicidade global de cada componente. A estrutura da AIP é definida como aip://<domain>/<provider>/<entity_id>, onde <domain> representa o domínio da entidade, <provider> representa o provedor da entidade e <entity_id> representa o identificador único da entidade. Essa abordagem permite que os componentes sejam identificados e acessados de forma única dentro do sistema.
Componente
Um componente é um objeto endereçável via URI. Isso significa que cada componente pode ser identificado e acessado de forma única dentro do sistema. A utilização de componentes permite que o sistema seja modular e escalável, facilitando a adição de novos componentes e a remoção de componentes obsoletos.
Entidade
Uma entidade é um componente com propriedades, como nome, descrição, dono e data. As entidades são os principais objetos de interesse no sistema e podem ser de diferentes tipos. A definição de entidades permite que o sistema organize e processe as informações de forma eficiente.
Tipo de Entidade
O tipo de entidade é um agrupamento de entidades com base em seu data shape, que define as restrições de atributos e relacionamentos entre as entidades. Isso permite que o sistema organize e processe as entidades de forma eficiente. A definição de tipos de entidade é fundamental para garantir que as entidades sejam consistentes e precisas.
Domínio
Um domínio é uma interface abstrata que categoriza os ativos do sistema. Por exemplo, os domínios podem incluir Models, Pipelines, Datasets, etc. Cada domínio define um conjunto de regras e restrições para as entidades que o compõem. A definição de domínios permite que o sistema seja organizado e escalável.
Provedor
Um provedor é uma implementação concreta de um domínio. Por exemplo, um provedor de modelos pode ser um registro de modelos interno. Os provedores são responsáveis por fornecer as entidades e os metadados associados ao sistema. A definição de provedores permite que o sistema seja flexível e escalável.
📈 Pipeline de Ingestão e Processamento
Ingestão de Eventos
O pipeline de ingestão e processamento começa com a ingestão de eventos, que são notificações de mudanças nos sistemas de origem. Esses eventos são recebidos via protocolos como Kafka, AWS SNS/SQS e são modelados como *thin events*, contendo apenas a notificação de mudança. As fontes de eventos incluem orquestração de pipelines, registro de modelos, feature store, plataforma de experimentos, dataset platform e plataforma de identidade.
Enriquecimento (Hydration Contract)
Após a ingestão de eventos, o próximo passo é o enriquecimento, também conhecido como *hydration*. Nesse processo, o MDS valida o esquema do evento e consulta a API da fonte de origem para obter o estado atual, garantindo a consistência dos metadados. O enriquecimento é feito via *Hydration Contract*, que garante a independência da ordem dos eventos, tornando o sistema resiliente a perda ou desordem de mensagens. No entanto, isso pode aumentar a carga de leitura nas APIs de origem, exigindo estratégias de *rate limiting*, *caching* e *backoff* para mitigar esse efeito.
Propriedade Crítica: Independência da Ordem dos Eventos
A propriedade crítica do enriquecimento é a independência da ordem dos eventos. Isso significa que o estado é sempre reconciliado com a fonte, tornando o sistema resiliente a perda ou desordem de mensagens. Essa abordagem garante que os metadados sejam consistentes e atualizados, mesmo em caso de falhas ou problemas de comunicação.
Trade-off: Aumento de Carga de Leitura
No entanto, o enriquecimento pode aumentar a carga de leitura nas APIs de origem, o que pode ser um desafio. Para mitigar esse efeito, é necessário implementar estratégias de *rate limiting*, *caching* e *backoff* para reduzir a carga de leitura e garantir a escalabilidade do sistema. Além disso, é fundamental monitorar e ajustar essas estratégias para garantir que o sistema possa lidar com o volume de eventos e manter a consistência dos metadados.
📊 Métricas e Casos de Uso de Consultas
Descoberta de Ativos
O MDS suporta a descoberta de ativos, permitindo que os usuários identifiquem quais features existem e quais fontes de dados geram features para um modelo específico. Isso é alcançado por meio de consultas que permitem a busca por features e modelos, facilitando a identificação de ativos relevantes.
Linhagem de Modelos
A linhagem de modelos é outro caso de uso importante suportado pelo MDS. Isso permite que os usuários identifiquem quais pipelines geram dados para um modelo específico e quais fontes alimentam essas features. Essa capacidade é fundamental para entender a origem e a dependência dos dados utilizados nos modelos.
Análise de Impacto
O MDS também fornece métricas para avaliar o impacto de alterações em features ou modelos. Isso inclui a identificação de quais modelos falharão se uma feature for alterada e quem é o proprietário de cada modelo. Essa análise de impacto é crucial para garantir que as alterações sejam feitas de forma controlada e segura.
Exemplo de Fluxo de Dados
Um exemplo de fluxo de dados no MDS é quando um evento de criação de instância de modelo é recebido. Nesse caso, o MDS executa uma consulta para obter os metadados completos da instância do modelo, incluindo o ID da pipeline run, os e-mails dos proprietários e as labels associadas. Esses metadados são então armazenados no grafo de ciclo de vida do modelo, permitindo que os usuários acessem e analisem as informações de linhagem e dependência.
“`
Atenção: O conteúdo dentro da tag
{
"id": "aip://model/registry/ranking-model-v5-20XX0101",
"pipeline_run": "aip://pipeline-run/orchestrator/train-weekly-ranking-20XX0101",
"entity_type": "ModelInstance",
"owners": [
"aip://user/identity/alice"
],
"tags": [
{
"tag": "team",
"value": "personalization"
}
]
}
“`
Casos de Uso Críticos
O MDS suporta vários casos de uso críticos, incluindo a linhagem de modelos, a análise de impacto e a descoberta de uso. Esses casos de uso são fundamentais para garantir que os modelos sejam desenvolvidos, implantados e mantidos de forma eficaz e segura. Além disso, o MDS fornece métricas para avaliar a integridade do grafo, incluindo a completude, a atualidade e a precisão dos metadados.
📈 Arquitetura de Dados: MDS
Normalização e Modelo de Entidade
A arquitetura de dados do MDS inclui a normalização e o modelo de entidade, que visa converter esquemas heterogêneos de sistemas de origem em um modelo unificado. Isso é alcançado por meio da utilização de um padrão de identificação, como o URI de Identificação (AIP), que garante a unicidade global dos componentes.
Armazenamento e Indexação
O armazenamento e a indexação dos metadados são realizados utilizando Datomic e Elasticsearch. Datomic atua como um sistema de registro (Source of Truth) e dataset de trabalho, enquanto Elasticsearch é utilizado para a busca full-text e a descoberta de entidades.
Enriquecimento de Conhecimento
O enriquecimento de conhecimento é um processo que visa fornecer uma visão unificada dos metadados, permitindo a inferência de relacionamentos e a materialização de entidades a partir de sistemas legados. Isso é alcançado por meio de jobs em background que realizam a hidratação de entidades e a atualização do estado dos metadados.
“`
Atenção: O conteúdo dentro da tag
{
"id": "aip://model/registry/ranking-model-v5-20XX0101",
"pipeline_run": "aip://pipeline-run/orchestrator/train-weekly-ranking-20XX0101",
"entity_type": "ModelInstance",
"owners": [
"aip://user/identity/alice"
],
"tags": [
{
"tag": "team",
"value": "personalization"
}
]
}
“`
Interface e Consulta
A interface de consulta do MDS é baseada em GraphQL, permitindo a exploração de linhagem e dependências entre as entidades. Isso é alcançado por meio de queries que permitem a navegação no grafo de metadados.
“`
query {
model(id: "aip://model/registry/ranking-model-v5-20XX0101") {
name
currentInstance {
pipeline {
name
}
associatedAbTests {
name
}
}
}
}
“`
🔍 Interface e Consulta
Acesso e Consulta via GraphQL
A interface do MDS é baseada em GraphQL, permitindo que os usuários explorem linhagem e dependências de forma eficiente. Isso é alcançado por meio de uma API GraphQL que fornece uma variedade de consultas para recuperar informações sobre modelos, features, datasets e equipes.
Exemplo de Query de Linhagem
Um exemplo de como a interface de consulta pode ser utilizada é através da seguinte query GraphQL:
“`
query {
model(id: "aip://model/registry/ranking-model-v5-20XX0101") {
name
currentInstance {
pipeline {
name
}
associatedAbTests {
name
}
}
}
}
“`
Essa query permite recuperar informações detalhadas sobre um modelo específico, incluindo o nome do modelo, o nome da pipeline associada e os testes A/B relacionados.
Portal de Acesso
Além da interface de consulta via GraphQL, o MDS também fornece um portal de acesso para os usuários. Esse portal oferece uma interface unificada para navegação no Model Lifecycle Graph, permitindo que os usuários visualizem e explorem as relações entre diferentes entidades de forma intuitiva. O portal também suporta visualizações dinâmicas, como páginas de entidades geradas automaticamente para novos tipos de dados, e camadas de visualização específicas por domínio.
📊 Fatos Técnicos e Arquiteturais: Model Lifecycle Graph (MDS)
Infraestrutura de Busca
O MDS utiliza Elasticsearch como motor de busca full-text para indexação de modelos, features, datasets e equipes.
Interface de Usuário (AIP Portal)
A interface unificada para navegação no Model Lifecycle Graph oferece suporte a visualizações dinâmicas, como páginas de entidades geradas automaticamente para novos tipos de dados, além de camadas de visualização específicas por domínio.
Mecanismos de Ingestão e Consistência
O MDS emprega mecanismos de ingestão e consistência, incluindo Hydration via source-of-truth, Validação obrigatório no momento da ingestão e Enriquecimento via jobs em background para inferência de relacionamentos e materialização de entidades a partir de sistemas legados.
Desafios de Engenharia (Roadmap)
Os desafios de engenharia incluem a necessidade de arquitetura de plugins para escalar a integração com novas ferramentas de ML e evitar fragmentação, implementação de sistemas de validação automatizada para detectar anomalias, metadados obsoletos ou descrições ausentes, e desenvolvimento de motor de recomendação baseado em padrões de uso.
Métricas de Integridade do Grafo
As métricas de integridade do grafo incluem Completude (cobertura de entidades), Atualidade (timeliness dos eventos) e Precisão (consistência dos relacionamentos inferidos).
Fonte: netflixtechblog.com.
Curadoria e Insights: Redação YTI&W (Developers).