Uma estrutura de engenharia de software para saltar para iniciar seus projetos de aprendizado de máquina

A documentação completa pode ser acessada aqui.
Você pode instalar o LOLPOP do Pypi usando pip :
pip install lolpop Se você estiver trabalhando no modo dev, pode clonar este repositório e instalar o LOLPOP por cd 'ing no este diretório e executando:
poetry install Bem -vindo ao LOLPOP!
LOLPOP é uma estrutura de engenharia de software para fluxos de trabalho de aprendizado de máquina.
O objetivo abrangente é fornecer uma estrutura que possa ajudar a unificar as equipes de ciência de dados e engenharia de aprendizado de máquina. Acreditamos ao estabelecer uma estrutura padrão para o trabalho de aprendizado de máquina que as equipes podem colaborar de maneira mais limpa e serem mais produtivas.
O bom design do sistema é fundamental no desenvolvimento de software e o LOLPOP tenta seguir os seguintes princípios. Um bom design do sistema conterá:
Além disso, os seguintes objetivos foram lembrados ao criar LOLPOP:
LOLPOP tem um modelo conceitual relativamente plano que contém três recursos principais para entender:
train_model . Esse método saberia como obter dados recebidos, treinar um modelo ou conjunto de modelos, versá -los e retornar o modelo vencedor. Esse método funcionaria em vários componentes, como um codificador de recursos, treinador de modelo, sintonizador de hiperparâmetro, rastreador de metadados e sistema de controle de versão de recursos.Componentes, oleodutos e corredores têm muitos traços comuns. Utilizamos o termo integração ao nos referirmos ao conjunto de componentes, pipelines e corredores.
Há também uma hierarquia natural entre componentes, oleodutos e corredores:
LOLPOP tem um fluxo de trabalho de desenvolvimento direto. Esperamos que todos achem delicioso de usar!
Primeiro: escreva seus próprios componentes ou use os pré-criados:
from lolpop . comonent import BaseComponent
from catboost import CatBoostRegressor , CatBoostClassifier
class CatboostModelTrainer ( BaseComponent ):
def __init__ ( problem_type = None , params = {}, * args , ** kwargs ):
super (). __init__ ( * args , ** kwargs )
if problem_type == "classification" :
self . model = CatBoostClassifier ( ** params )
elif problem_type == "regression" :
self . model = CatBoostRegressor ( ** params )
def fit ( self , data , * args , ** kwargs ):
self . model . fit ( data [ "X_train" ], data [ "y_train" ])
return self . model
... Os componentes podem ser aproveitados nos fluxos de trabalho do pipeline e corredor. Em vez de se referir a classes de componentes específicas, esses fluxos de trabalho são projetados para usar tipos de componentes genéricos, como mostrado abaixo.
from lolpop . pipeline import BasePipeline
class MyTrainingPipeline ( BasePipeline ):
...
def train_model ( self , data , * args , ** kwargs ):
model = self . model_trainer . train_model ( data )
return model
...Em seguida, configuramos quais classes usar em nosso pipeline e configuração do corredor, como mostrado abaixo:
# runner config
pipeline :
train : MyTrainingPipeline
...
# pipelines config
train :
component :
model_trainer : CatBoostTrainer
model_trainer :
config :
training_params :
iterations : 2
depth : 2
learning_rate : 1
loss_function : RMSE
...
Finalmente, os fluxos de trabalho podem ser invocados via código Python:
from lolpop . extension import MyRunner
config_file = "/path/to/dev.yaml"
runner = MyRunner ( conf = config_file )
...
model = runner . train . train_model ( data )
... ou através da LOLPOP CLI:
lolpop run workflow MyRunner --config-file /path/to/dev.yamlSe você estiver interessado em construir seus próprios fluxos de trabalho, é uma boa ideia examinar alguns dos exemplos fornecidos e também examinar a estrutura extensível
Há muito que sentimos que o ecossistema ML não possuía uma ferramenta para atuar como cola entre todas as várias coisas que é preciso fazer para executar com êxito um caso de uso de produção. LOLPOP é uma tentativa de preencher essa lacuna - para ser essa cola. Para mais informações sobre a inspiração por trás do LOLPOP, leia nosso blog de lançamento.
Às vezes, é útil entender o que uma ferramenta não é para entender completamente o que é. A descrição 'Framework de engenharia de software para fluxos de trabalho de aprendizado de máquina' pode ser um pouco obtusa, por isso pode ser útil entender o seguinte:
LOLPOP não é uma ferramenta de orquestração . De fato, você provavelmente deve usar um orquestrador para executar o código que você cria com o LOLPOP. Você deve facilmente integrar sua ferramenta de orquestração preferida com o LOLPOP.
LOLPOP não é uma ferramenta de pipeline . Existem várias boas ferramentas de pipelining por aí e você pode querer usá -las com o LOLPOP. Por exemplo, temos um exemplo de uso do Metaflow com o LOLPOP, para aqueles que são tão inclinados.
LOLPOP não é um rastreador de metadados, plataforma de treinamento, tacker de experimentos, etc. Acreditamos que você deveria ter e usá -los, se quiser. LOLPOP ficará feliz em tê -los como componentes e permitir que você os construa em seus fluxos de trabalho.
O LOLPOP realmente não faz nada , isso ajuda principalmente a escrever melhores fluxos de trabalho da ML, mais rápido. É poucopinado sobre quais ferramentas você usa para fazer isso.
QuickStart: Vá aqui para um guia rápido. Aprenda a instalar o LOLPOP e colocá -lo em funcionamento. Execute seu primeiro fluxo de trabalho, dance e comemore!
Guia do usuário: Vá aqui para aprender a trabalhar com o LOLPOP.
Integrações: Vá aqui para aprender sobre o corredor pré-construído, oleodutos e componentes que você pode usar para criar seus próprios fluxos de trabalho.
Extensões: Vá aqui para aprender tudo o que você precisa fazer para começar a construir seus próprios corredores, oleodutos e componentes.
CLI: Vá aqui para aprender a usar a interface da linha de comando LOLPOP.
Exemplos: Vá aqui para encontrar alguns exemplos de uso do LOLPOP.
Recursos: Vá aqui para descobrir como entrar em contato com a equipe LOLPOP, contribuindo para o LOLPOP, etc.