Основи пайплайну машинного навчання «від початку до кінця», частина 1: інтеграція Flask, MySQL та Ascend NPU

текст перекладу
pic

Фото: Possessed Photography на Unsplash

Вступ

Пайплайни машинного навчання (ML) кінця до кінця — це серія з'єднаних етапів, які обробляють дані, тренують моделі та роблять прогнози. У першій частині нашої серії ми зосередимося на створенні міцної основи. Ми використаємо Huawei Ascend NPU, Flask для API, MySQL для зберігання даних і Docker Compose для легкого налаштування. Наприкінці цієї статті ви отримаєте робочий пайплайн, який збирає та зберігає дані.

Розпочнемо!

Що таке пайплайн ML?

Пайплайн ML — це як виробнича лінія для даних і моделей. Він бере сирі дані, обробляє їх, навчає модель і в кінці використовує цю модель для прогнозування. Повний пайплайн включає:

  1. Інтеграція даних (Data Ingestion): Збір і зберігання даних.
  2. Обробка (Processing): Очищення та підготовка даних до використання.
  3. Навчання моделі (Model Training): Використання даних для навчання моделей машинного навчання.
  4. Розгортання (Deployment): Надання навченої моделі для використання.

У цій частині ми зосередимося на інтеграції даних та зберіганні, що є початковим етапом для будь-якого пайплайна.

Чому варто використовувати Huawei Ascend NPU?

Huawei Ascend NPU (Neural Processing Unit) — це апаратний пристрій, створений для швидкого та ефективного виконання завдань ШІ. Ось чому він ідеально підходить для пайплайнів ML:

pic

Huawei Ascend NPU

  • Швидка обробка: Виконує тренування та прогнозування швидше за традиційні процесори (CPU).
  • Енергозбереження: Використовує менше енергії, що робить його економічно вигідним.
  • Зручний для розробників: Поставляється з інструментами для інтеграції в проекти.

У майбутніх частинах Ascend NPU буде використовуватися для навчання моделей і інференсів.

Для детальної інформації, будь ласка, ознайомтеся з наступними статтями:

[

👨‍💻 Повна платформа ШІ для програмного і апаратного забезпечення Ascend

Привіт! У цій статті ми поговоримо про структуру, пристрої та програмне забезпечення чіпів Huawei Ascend.

medium.com

](/huawei-developers/ascend-full-stack-ai-software-hardware-platform-f012156f7f1a?source=post_page-----d2b729df391c--------------------------------)

[

👨🏼‍💻 Основні компоненти процесорів Ascend

Привіт, хлопці! Сьогодні ми поговоримо про ATC, AIPP, DVPP і ACL. Також ми зробимо приклад інференсу з...

medium.com

](/huawei-developers/core-components-of-ascend-processors-28dc746fb94d?source=post_page-----d2b729df391c--------------------------------)

Інструменти, які вам знадобляться

Для цієї частини ми використаємо наступні інструменти:

  1. Flask: Легкий фреймворк Python для створення API для інтеграції даних.

pic

Flask API Flow (Базовий)

2. MySQL: База даних для зберігання інтегрованих даних.

3. Docker Compose: Інструмент для запуску кількох сервісів, таких як Flask та MySQL, зручним способом.

4. Huawei Ascend Toolkit: Для налаштування NPU (буде використовуватися більше в наступних частинах).

Крок 1: Налаштування середовища

Перед початком

Переконайтеся, що у вас встановлено:

Перевірка вашого Huawei Ascend NPU

Щоб перевірити, чи готовий NPU:

  1. Встановіть Ascend Toolkit.
  2. Перевірте налаштування за допомогою цієї команди:
npu-smi info

Це покаже вам деталі про ваш NPU, його статус та специфікації.

Крок 2: Створення Flask API для інтеграції даних

Що таке Flask?

pic

Flask API Flow (Детально)

Flask — це фреймворк Python, який дозволяє будувати веб-API. API (інтерфейс програмування додатків) — це спосіб, за допомогою якого додатки можуть взаємодіяти один з одним.
текст перекладу
В нашому випадку це дозволить користувачам надсилати дані до пайплайна.

Встановлення Flask

Запустіть цю команду, щоб встановити Flask:

pip install flask

Написання коду API

Створіть файл з ім'ям app.py і додайте наступний код:

from flask import Flask, request, jsonify  
app = Flask(__name__)  

# Endpoint для інтеграції даних  
@app.route('/ingest', methods=['POST'])  
def ingest_data():  
 data = request.json # Отримуємо дані у форматі JSON з запиту  
 print("Received Data:", data) # Виводимо їх в консоль  
 return jsonify({"status": "success", "message": "Data ingested successfully!"})  
if __name__ == '__main__':  
 app.run(host='0.0.0.0', port=5000)

Запуск Flask API

Запустіть сервер Flask, виконуючи команду:

python app.py

Тестування API

Ви можете використати інструмент, як-от Postman або cURL, щоб протестувати API. Наприклад:

curl -X POST -H "Content-Type: application/json" \  
-d '{"name":"Alice", "age":25}' http://127.0.0.1:5000/ingest

Якщо все працює, ви побачите дані, виведені в консоль.

Крок 3: Налаштування MySQL з Docker Compose

Що таке Docker Compose?

Docker Compose — це інструмент, який дозволяє запускати кілька додатків (як Flask, так і MySQL) в контейнерах. Контейнер — це легка, портативна версія віртуальної машини.

pic

Діаграма сервісів Docker Compose

Написання файлу Docker Compose

Створіть файл з ім'ям docker-compose.yml і додайте наступне:

version: '3.7'  
services:  
 mysql:  
 image: mysql:5.7 # Версія MySQL  
 environment:  
 MYSQL_ROOT_PASSWORD: root  
 MYSQL_DATABASE: pipeline_db  
 ports:  
 - "3306:3306" # Відкриваємо MySQL на порту 3306  
 volumes:  
 - mysql_data:/var/lib/mysql  

volumes:  
 mysql_data:

Запуск MySQL з Docker Compose

Запустіть контейнер MySQL, виконуючи команду:

docker-compose up -d

Це завантажить образ MySQL, запустить базу даних і зробить її доступною на порту 3306.

Крок 4: Підключення Flask до MySQL

Встановлення SQLAlchemy

pic

Процес підключення Flask до MySQL

SQLAlchemy — це бібліотека Python, яка полегшує підключення до баз даних та взаємодію з ними. Встановіть її за допомогою:

pip install sqlalchemy mysql-connector-python

Оновлення коду Flask для використання MySQL

Змініть app.py, щоб зберігати дані в базі даних:

from sqlalchemy import create_engine  

# Підключення до MySQL  
engine = create_engine('mysql+mysqlconnector://root:root@localhost:3306/pipeline_db')  
@app.route('/ingest', methods=['POST'])  
def ingest_data():  
 data = request.json  
 # Вставка даних у MySQL  
 with engine.connect() as connection:  
 connection.execute("INSERT INTO data_table (name, age) VALUES (:name, :age)", data)  
 return jsonify({"status": "success", "message": "Data saved to MySQL!"})

Крок 5: Візуалізація робочого процесу

Ось робочий процес, який ми побудували до цього часу:

  1. Джерело даних (Data Source): Надсилає дані до пайплайна.
  2. Flask API: Отримує дані.
  3. База даних MySQL (MySQL Database): Зберігає дані для подальшого використання.

Діаграма:

pic

Загальний робочий процес

Висновок

У першій частині цієї серії ми заклали основу для пайплайна машинного навчання кінця до кінця, налаштувавши Flask API для інтеграції даних, інтегруючи базу даних MySQL за допомогою Docker Compose та готуючи Huawei Ascend NPU для майбутніх кроків. Ці початкові етапи зосереджені на створенні інфраструктури для ефективної обробки та зберігання даних, що є критичним перед тим, як перейти до навчання моделей та розгортання.

Що буде далі в частині 2?

У Частині 2 ми:

  1. Налаштуємо Prometheus і Grafana для моніторингу пайплайна.
  2. Використаємо AirFlow для автоматизації задач попередньої обробки та навчання.
    3.
    текст перекладу
    Представляємо MLFlow для відстеження експериментів та моделей.

Слідкуйте за нами, щоб дізнатися про наступні кроки в побудові повноцінного, масштабованого пайплайна машинного навчання!

pic

Посилання

[

Процесори Ascend

www.hiascend.com

](https://www.hiascend.com/?source=post_page-----d2b729df391c--------------------------------)

[

Ласкаво просимо до Flask - Документація Flask (3.1.x)

Ласкаво просимо до документації Flask. Flask — це легкий веб-фреймворк WSGI для веб-додатків. Він розроблений для того, щоб…

flask.palletsprojects.com

](https://flask.palletsprojects.com/en/stable/?source=post_page-----d2b729df391c--------------------------------)

[

MySQL

Понад 2000 ISV, OEM та VAR використовують MySQL як вбудовану базу даних своїх продуктів для створення додатків, апаратного забезпечення…

www.mysql.com

](https://www.mysql.com/?source=post_page-----d2b729df391c--------------------------------)

[

SQLAlchemy

Інструментарій для роботи з базами даних у Python

www.sqlalchemy.org

](https://www.sqlalchemy.org/?source=post_page-----d2b729df391c--------------------------------)

[

Docker Compose

Дізнайтеся, як використовувати Docker Compose для визначення та запуску багатоконтейнерних додатків у цьому детальному введенні…

docs.docker.com

](https://docs.docker.com/compose/?source=post_page-----d2b729df391c--------------------------------)

Перекладено з: End-to-End Machine Learning Pipeline Basics Part 1: Flask, MySQL, and Ascend NPU Integration

Leave a Reply

Your email address will not be published. Required fields are marked *