Carton é uma API de código aberto projetada para facilitar a execução de modelos de aprendizado de máquina (ML) em várias linguagens de programação sem a necessidade de conversões complexas ou código específico de framework. Ao encapsular modelos com metadados essenciais em um arquivo zip padronizado, o Carton garante integração e implantação sem problemas, permitindo que os desenvolvedores se concentrem na lógica da aplicação em vez de problemas de compatibilidade.
Principais Características e Funcionalidades:
- Execução Agnóstica de Framework: O Carton permite a execução de modelos de ML a partir de qualquer linguagem de programação, incluindo Python, JavaScript, TypeScript, Rust, C, C++, C#, Java, Golang, Swift, Ruby, PHP, Kotlin e Scala.
- Empacotamento de Modelos: Ele envolve modelos com metadados em um arquivo zip sem alterar o modelo original, evitando assim etapas de conversão propensas a erros.
- Seleção Automática de Runner: Ao carregar um modelo empacotado, o Carton lê os metadados incluídos para determinar o "runner" apropriado e o busca automaticamente, se necessário.
- Desempenho Otimizado: Implementado em Rust com bindings para várias linguagens, o Carton oferece um núcleo otimizado que minimiza a sobrecarga, com benchmarks preliminares indicando menos de 100 microssegundos por chamada de inferência.
- Suporte Multiplataforma: Suporta Linux e macOS x86_64, Linux aarch64 (por exemplo, AWS Graviton), macOS aarch64 (por exemplo, chips Apple Silicon) e WebAssembly (com suporte futuro para runners WebGPU).
Valor Principal e Problema Resolvido:
O Carton aborda o desafio de executar modelos de ML em diferentes ambientes de programação, fornecendo uma API unificada e agnóstica de framework. Isso elimina a necessidade de os desenvolvedores escreverem código específico de framework ou realizarem conversões complexas de modelos, acelerando assim os ciclos de desenvolvimento e reduzindo potenciais erros. Ao desacoplar o código de inferência de frameworks específicos de ML, o Carton permite que os desenvolvedores se mantenham atualizados com os avanços na área sem estarem presos a uma pilha tecnológica específica.