текст перекладу
Фото: Possessed Photography на Unsplash
Вступ
Пайплайни машинного навчання (ML) кінця до кінця — це серія з'єднаних етапів, які обробляють дані, тренують моделі та роблять прогнози. У першій частині нашої серії ми зосередимося на створенні міцної основи. Ми використаємо Huawei Ascend NPU, Flask для API, MySQL для зберігання даних і Docker Compose для легкого налаштування. Наприкінці цієї статті ви отримаєте робочий пайплайн, який збирає та зберігає дані.
Розпочнемо!
Що таке пайплайн ML?
Пайплайн ML — це як виробнича лінія для даних і моделей. Він бере сирі дані, обробляє їх, навчає модель і в кінці використовує цю модель для прогнозування. Повний пайплайн включає:
- Інтеграція даних (Data Ingestion): Збір і зберігання даних.
- Обробка (Processing): Очищення та підготовка даних до використання.
- Навчання моделі (Model Training): Використання даних для навчання моделей машинного навчання.
- Розгортання (Deployment): Надання навченої моделі для використання.
У цій частині ми зосередимося на інтеграції даних та зберіганні, що є початковим етапом для будь-якого пайплайна.
Чому варто використовувати Huawei Ascend NPU?
Huawei Ascend NPU (Neural Processing Unit) — це апаратний пристрій, створений для швидкого та ефективного виконання завдань ШІ. Ось чому він ідеально підходить для пайплайнів ML:
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--------------------------------)
Інструменти, які вам знадобляться
Для цієї частини ми використаємо наступні інструменти:
- Flask: Легкий фреймворк Python для створення API для інтеграції даних.
Flask API Flow (Базовий)
2. MySQL: База даних для зберігання інтегрованих даних.
3. Docker Compose: Інструмент для запуску кількох сервісів, таких як Flask та MySQL, зручним способом.
4. Huawei Ascend Toolkit: Для налаштування NPU (буде використовуватися більше в наступних частинах).
Крок 1: Налаштування середовища
Перед початком
Переконайтеся, що у вас встановлено:
- Docker: Завантажте з офіційного сайту Docker.
- Python 3.x: Завантажте з офіційного сайту Python.
- Huawei Ascend Toolkit: Ознайомтесь з офіційною документацією Huawei для налаштування.
Перевірка вашого Huawei Ascend NPU
Щоб перевірити, чи готовий NPU:
- Встановіть Ascend Toolkit.
- Перевірте налаштування за допомогою цієї команди:
npu-smi info
Це покаже вам деталі про ваш NPU, його статус та специфікації.
Крок 2: Створення Flask API для інтеграції даних
Що таке Flask?
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) в контейнерах. Контейнер — це легка, портативна версія віртуальної машини.
Діаграма сервісів 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
Процес підключення 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: Візуалізація робочого процесу
Ось робочий процес, який ми побудували до цього часу:
- Джерело даних (Data Source): Надсилає дані до пайплайна.
- Flask API: Отримує дані.
- База даних MySQL (MySQL Database): Зберігає дані для подальшого використання.
Діаграма:
Загальний робочий процес
Висновок
У першій частині цієї серії ми заклали основу для пайплайна машинного навчання кінця до кінця, налаштувавши Flask API для інтеграції даних, інтегруючи базу даних MySQL за допомогою Docker Compose та готуючи Huawei Ascend NPU для майбутніх кроків. Ці початкові етапи зосереджені на створенні інфраструктури для ефективної обробки та зберігання даних, що є критичним перед тим, як перейти до навчання моделей та розгортання.
Що буде далі в частині 2?
У Частині 2 ми:
- Налаштуємо Prometheus і Grafana для моніторингу пайплайна.
- Використаємо AirFlow для автоматизації задач попередньої обробки та навчання.
3.
текст перекладу
Представляємо MLFlow для відстеження експериментів та моделей.
Слідкуйте за нами, щоб дізнатися про наступні кроки в побудові повноцінного, масштабованого пайплайна машинного навчання!
Посилання
[
Процесори 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