Converter um notebook em um script
Depois de usar notebooks para experimentação e desenvolvimento, converta um notebook em um script. Alternativamente, você pode optar por ignorar o uso de notebooks e trabalhar apenas com scripts. De qualquer forma, há algumas recomendações ao criar scripts para preparar seu código para produção.
Os scripts são ideais para testes e automação no ambiente de produção. Para criar um script pronto para produção, o seguinte é necessário:
- Remover códigos não essenciais.
- Refatorar o código em funções.
- Testar o script no terminal.
Remover todo o código não essencial
O principal benefício do uso de notebooks é a possibilidade de explorar os dados rapidamente. Por exemplo, é possível usar as instruções print()
e df.describe()
para explorar dados e variáveis. Ao criar um script a ser usado para automação, evite incluir códigos escritos para fins exploratórios.
A primeira coisa que deve ser feita para converter o código em código de produção é remover as partes não essenciais. Especialmente ao executar o código regularmente, evite a execução de qualquer parte não essencial a fim de reduzir o custo e o tempo de computação.
Refatorar o código em funções
Ao usar códigos em processos de negócios, elabore-os a fim de facilitar a leitura, para que a manutenção possa ser feita por qualquer pessoa. Uma abordagem comum para facilitar a leitura e o teste do código é usar funções.
Por exemplo, você deve ter utilizado o seguinte código de exemplo em um notebook para ler e dividir os dados:
# read and visualize the data
print("Reading data...")
df = pd.read_csv('diabetes.csv')
df.head()
# split data
print("Splitting data...")
X, y = df[['Pregnancies','PlasmaGlucose','DiastolicBloodPressure','TricepsThickness','SerumInsulin','BMI','DiabetesPedigree','Age']].values, df['Diabetic'].values
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=0)
Como as funções também permitem testar partes do seu código, é preferível criar várias funções menores, ao invés de uma função grande. Se uma parte do código precisar ser testada, faça-o somente em um pequeno fragmento a fim de evitar a execução de mais partes do que o necessário.
É possível refatorar o código mostrado no exemplo em duas funções:
- Ler os dados
- Dividir os dados
Um exemplo de código refatorado pode ser o seguinte:
def main(csv_file):
# read data
df = get_data(csv_file)
# split data
X_train, X_test, y_train, y_test = split_data(df)
# function that reads the data
def get_data(path):
df = pd.read_csv(path)
return df
# function that splits the data
def split_data(df):
X, y = df[['Pregnancies','PlasmaGlucose','DiastolicBloodPressure','TricepsThickness',
'SerumInsulin','BMI','DiabetesPedigree','Age']].values, df['Diabetic'].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=0)
return X_train, X_test, y_train, y_test
Observação
Observe que códigos não essenciais também foram omitidos no código refatorado. É possível optar por usar instruções print
no código de produção a fim de revisar a saída do script para garantir que todo o código seja executado conforme o esperado. No entanto, se você sabe que não revisará a saída de um script em um terminal, é melhor remover os códigos desnecessários.
Testar o script
Antes de usar scripts em ambientes de produção, por exemplo, integrando-os a pipelines de automação, teste se eles funcionam conforme o esperado.
Uma maneira simples de testar o script é executá-lo em um terminal. No workspace do Azure Machine Learning, é possível executar rapidamente um script no terminal da instância de computação.
É possível optar por salvar e executar um script no terminal ao abri-lo na página Notebooks do Estúdio do Azure Machine Learning.
Como alternativa, é possível navegar diretamente para o terminal da instância de computação. Acesse a página Computação e selecione o Terminal da instância de computação que você deseja usar. É possível usar o seguinte comando para executar um script Python chamado train.py
:
python train.py
As saídas de instruções print
serão mostradas no terminal. Quaisquer erros possíveis também aparecerão no terminal.