Это 12-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления
Кратко
Ploomber — это самый простой способ создать надежные рабочие процессы данных для науки о данных и машинного обучения. Когда вы предоставляете исходный код в стандартной форме, Ploomber автоматически создает для вас рабочий процесс. Задачи могут быть любыми: от функций Python, Jupyter Notebooks, сценариев Python/R/shell и сценариев SQL. Когда будете готовы, разверните в Airflow без изменений кода илиKubernetes(используя Арго).
Главная особенность
Встроенный ноутбук Jupyter. Когда вы откроете блокнот, Ploomber автоматически вставит новую ячейку с расположением входного файла, полученным из вышестоящих переменных. Если вы открываете сценарий Python или R, он мгновенно преобразуется в блокнот.
Поддержка инкрементных сборок. Ускорьте выполнение, пропуская задачи, исходный код которых не изменился.
Поддержка распараллеливания. Поддерживает параллельное выполнение задач для ускорения вычислений.
Поддержка тестирования рабочего процесса. При выполнении задачи запустите тесты, чтобы убедиться, что выходные данные имеют правильные свойства (например, значения в ожидаемом диапазоне).
Поддержка отладки рабочего процесса. использоватьplumber interact
Запустите интерактивный сеанс для отладки вашего рабочего процесса. перечислитьdag['task_name'].debug()
чтобы начать сеанс отладки.
Поддерживает развертывание в Kubernetes, AWS Batch или Airflow.. Вы можете разрабатывать и выполнять локально. Когда вы будете готовы к развертыванию, экспортируйте в Kubernetes, AWS Batch или Airflow. (Примечание: Ploomber предоставляетSoopervisorБиблиотеки для запуска рабочих процессов Ploomber для пакетной обработки (обучение в масштабе или пакетное обслуживание) или онлайн-вывода. )
Пример
определить задачи
Сначала определите задачу, здесь задача — это скрипт Python.
Этот рабочий процесс состоит из 3 задач, первая задача raw.py получает некоторые данные, вторая задача clean.py очищает данные, а третья задача plot.py создает визуализацию.
ls *.py
clean.py plot.py raw.py
Эти три сценария выше составляют наш рабочий процесс (или DAG), который представляет собой набор задач с предопределенным порядком выполнения.
raw.py
"""
Get data
"""
import seaborn as sns
# + tags=["parameters"]
upstream = None
product = None
# -
# +
df = sns.load_dataset('iris')
df.columns = [
'sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class'
]
df.head()
# -
# +
df.to_csv(str(product['data']), index=False)
# -
clean.py
"""
Clean
"""
import pandas as pd
# + tags=["parameters"]
upstream = ['raw']
product = None
# -
df = pd.read_csv(upstream['raw']['data'])
# data cleaning code...
df.to_csv(str(product['data']), index=False)
plot.py
"""
Visualize
"""
# this is an annotated script
import pandas as pd
import seaborn as sns
# + tags=["parameters"]
upstream = ["clean"]
product = None
# -
df = pd.read_csv(upstream['clean']['data'])
sns.distplot(df.sepal_length)
sns.distplot(df.sepal_width)
df.head()
Ploomber интегрируется с Jupyter Notebook, и если вы откроете скрипты в приложении Jupyter Notebook, они будут отображаться как блокноты.
Определить рабочий процесс
Затем определите рабочий процесс, рабочий процесс определяется в файле pipe.yaml.
Файл pipe.yaml объявляет, какие файлы мы используем в качестве задач (pipe.yaml не является обязательным, но это дает вам больше гибкости).
pipeline.yaml
tasks:
- source: raw.py
product:
nb: output/raw.ipynb
data: output/data.csv
- source: clean.py
product:
nb: output/clean.ipynb
data: output/clean.csv
- source: plot.py
product: output/plot.ipynb
Нарисуйте схему рабочего процесса
Затем нарисуйте рабочий процесс в командной строке.
ploomber plot
Обзор рабочих процессов
ploomber status
Выходной результат:
name Last run Outdated? Product Doc (short) Location
------ ------------ ----------- ------------ ------------- ------------
raw Has not been Source code MetaProduct( /home/docs/c
run {'data': Fil heckouts/rea
e('output/da dthedocs.org
ta.csv'), /user_builds
'nb': File(' /ploomber/ch
output/raw.i eckouts/proj
pynb')}) ects-
master/spec-
api-python/r
aw.py
clean Has not been Source code MetaProduct( /home/docs/c
run & Upstream {'data': Fil heckouts/rea
e('output/cl dthedocs.org
ean.csv'), /user_builds
'nb': File(' /ploomber/ch
output/clean eckouts/proj
.ipynb')}) ects-
master/spec-
api-python/c
lean.py
plot Has not been Source code File('output /home/docs/c
run & Upstream /plot.ipynb' heckouts/rea
) dthedocs.org
/user_builds
/ploomber/ch
eckouts/proj
ects-
master/spec-
api-python/p
lot.py
Создайте рабочий процесс
Затем запустите рабочий процесс.
# output文件件保存输出结果,包括数据和脚本的Notebook
mkdir output
ploomber build
результат операции:
Building task 'raw': 0%| | 0/3 [00:00<?, ?it/s]
Executing: 0%| | 0/5 [00:00<?, ?cell/s]
Executing: 20%|██ | 1/5 [00:03<00:14, 3.71s/cell]
Executing: 100%|██████████| 5/5 [00:04<00:00, 1.15cell/s]
Building task 'clean': 33%|███▎ | 1/3 [00:04<00:08, 4.38s/it]
Executing: 0%| | 0/5 [00:00<?, ?cell/s]
Executing: 100%|██████████| 5/5 [00:01<00:00, 3.91cell/s]
Building task 'plot': 67%|██████▋ | 2/3 [00:05<00:02, 2.56s/it]
Executing: 0%| | 0/7 [00:00<?, ?cell/s]
Executing: 14%|█▍ | 1/7 [00:01<00:08, 1.35s/cell]
Executing: 71%|███████▏ | 5/7 [00:01<00:00, 4.18cell/s]
Executing: 100%|██████████| 7/7 [00:01<00:00, 3.65cell/s]
Building task 'plot': 100%|██████████| 3/3 [00:07<00:00, 2.53s/it]
name Ran? Elapsed (s) Percentage
------ ------ ------------- ------------
raw True 4.37319 57.5864
clean True 1.28883 16.9714
plot True 1.93212 25.4422
Обновить рабочий процесс
Если мы изменим задачи в рабочем процессе. Нам нужно обновить рабочий процесс, чтобы повторно выполнить измененные задачи.
ploomber build
результат операции:
0it [00:00, ?it/s]
name Ran? Elapsed (s) Percentage
------ ------ ------------- ------------
raw False 0 0
clean False 0 0
plot False 0 0
Как видно из вышеизложенного, ни одна из наших трех задач не выполняется повторно, потому что я не модифицировал эти три задачи.
Суммировать
Ploomber использует соглашение вместо конфигурации. С самого начала вам просто нужно включить две специальные переменные в ваши скрипты/блокноты, и Ploomber организует рабочий процесс. Для большей гибкости вы можете указать конвейер с помощью YAML.
Между тем, Ploomber может использовать Jupyter для интерактивной разработки сценариев и блокнотов, а затем выполнять их программно.