@startuml
entity "alembic_version" {
entity "experiment_tags" {
entity "experiments" {
entity "latest_metrics" {
entity "metrics" {
entity "model_version_tags" {
entity "model_versions" {
entity "params" {
entity "registered_model_tags" {
entity "registered_models" {
entity "runs" {
entity "tags" {
"experiments" ||--o{ "experiment_tags" "runs" ||--o{ "experiment_tags" "runs" }o--|| "latest_metrics" "runs" ||--o{ "metrics" "model_versions" ||--|{ "model_version_tags" "registered_models" ||--|{ "registered_model_tags" "runs" ||--o{ "params" "experiments" ||--|{ "runs" "runs" ||--o{ "tags"
@enduml упрости эту диаграмму, там образом чтобы она подходила не только под mlflow но и под аналогичные инструменты, чтобы в ее концепции были заложены лучшие практикам mlops, код напиши отдельно чтобы его можно было удобно скопировать
Конечно, вот упрощенная диагма для концепции Mps, подходящая не только для MLflow но и для аналогичных инструмент:
@startuml entity "Versioned Entity" { * version_num : varchar(32) } "Tags" { * key : varchar(250) value :(5000) * entity_id : int} entity "Entities" { * entity_id : int name varchar256) location : varchar(256) lifecycle : varchar(32) creation_time : bigint last_update_time : bigint } entity "Latest Metrics" { * : varchar(250) * value : double : bigint * step : bigint * is_nan : tiny(1) * entity_id : varchar(32) } entity "Metrics" { key : varchar(250) * value : double * timestamp : bigint * entity_id :(32) * step : bigint * is_nan : tinyint(1)} entity "Entity Tags" { * key : varchar250) value : varchar(5000) * name : varchar(256) * version int } entity "Versions" { * name : varchar256) * version : creation_time : bigint last_updated_time : bigint description : varchar(5000) user_id : varchar(256) current_stage :(20) source : varchar(500) run_id : varchar(32) status : varchar(20) status_message : varchar(500) run_link : varchar(500) } entity "Parameters" { * key : varchar(250) * value :varchar(500) * entity_id : varchar(32) entity "Entity Tags" { * key : varchar(250) value : varchar(5000) * name : varchar256) } entity "Entities" { * name : varchar(256) creation_time : bigint last_updated_time : bigint description : varchar(5000) } entity "Runs { * run_id : varchar(32) name : varchar(250) source_type : varchar(20) source_name : varchar(500) entry_point_name : varchar(50) user : varchar(256) status : varchar(9) start_time : bigint end_time : bigint source_version : varchar(50) lifecycle_stage : varchar(20) location : varchar(200) entity_id : int deleted_time : bigint} entity "Tags" { * key : varchar(250) value : varchar(5000) * entity_id : varchar() } "Entities" ||--o{ "Entity Tags" "" ||--o{ "Entity Tags" "Runs" }o--|| " Metrics" "Runs" ||--o{ "Metrics" "Versions"--|{ "Entity Tags" "Entities" ||--|{ "Entity Tags" Runs" ||--o{ "Parameters" "Entities" ||--|{ "" "Runs" ||--o{ "Tags" @enduml
Данная диаграммачитывает лучшие практики Mps, такие как версионирование,правление метадми, мониторинг метрик, управление параметрами, отслеживание стадий жизненного цла и тегирование.
теперь опиши подробно всю диаграмму
Диаграмма описывает структуру базы данных, которая управляет различными аспектами сущноей в информационной системе, оптимизированной для управления экспериментами, версиями, параметрами и метриами, что имеет отношение к практикам Mps (Machine Learning Operations).
Versioned Entity: Эта сущность представляет любой объект или компонент, который имеет неск версий. В нашем контексте это может быть машинная модель в различных стадиях её разработки.
Tags: Теги связывают с сущностями и содержат метаданны или дополнительную информацию об этих сущностях. Это может быть использовано для исполнения запросов или для организации и категоризации экспериментов.
Entities: Основной объект, который может представля эксперимент, запуск или модель. У каждой сущности есть идентификатор, имя, местонахождение (которое быть путем к файлу в хранилище), этапизненного цикла и временные отметки, описываие её создание и последнее обновление.
Latest Metrics: Эта сущность отслеживает последние измеренные значения метрик, связанные с запусками экспериментов.
5.Metrics**: Архив всех метрик,обираемых во время эксперимов. Содержит детализированные данные по каждой метрике с временными отметками и информацией, соответствующей каждому запуску.
Entity Tags: Теги, специфичные для версий конкрных сущностей. Это позволяет добавить дополнительные метаданные к определенным версиям такие как аннотации или кастомизированные метки.
Versions: Представляет конкретные версии какой-либо сущности, содержа информацию, касающуюся истории версий, пользователей, задействованных в их изменениях, и статусов версий.
Parameters: Параметры, использованные в экспериментах. Включает в себя ключ и значение каждого параметра, асоциированного с конкретным запуском.
Runs: Запись о каждом запуске эксперимента, включает всю информацию о его выполнении, иочник, уникальный идентифик, даты нач и окончания, жизненный этап иязь с экспериментом.
** (Runs)**: Аналогично "Entity Tags", но сваны с конкретными запусками эксперимов.
На диаграмме изображены следующие отношения:
Все сущ имеют атрибуты, идентификаторы и другие характеристики, которые делают даграмму достаточно абстрактной, чтобы ее можно было использовать не только в MLflow, н и в других, аналогичных ин
нужно описать еще подробнее, и привести примеры
Давайте рамотрим эту дирамму более подробно на конкретных примерах:
Versioned Entity может представлять модель машинного обучения. Например, модель классификации изображений с всиями 1.0, 1.1, 1.2 и т.д. Каждая версия будет иметь уникальный идентификатор версии version_num
.
Tags могут хранить дополнительную информацию о сущностях. Например, для эксперимента по обучению модели классификации изображений могут быть добавлены теги:
key: "goal" value: "classify images" experiment_id: 125 key: "data" value: "ImageNet dataset" experiment_id: 125
Entities представляют основные объекты, такие как эксперименты и модели. Например:
experiment_id: 125 name: "Image classification model v1" artifact_location: "s3://bucket/image_model/" lifecycle_stage: "production" creation_time: 1590350400 last_update_time: 1590436800
Latest Metrics будет хранить последние значения метрик для каждого запуска эксперимента:
key: "accuracy" value: 0.76 timestamp: 1590436800 step: 24000 is_: 0 run_uuid: "d89hh32kkd8d7a"
Parameters содержат гиперпараметры, использованные в запуска:
key: "learning_rate" value: 0.001 run_uuid: "d89hh32kkd8d7a" key: "batch_size" value: 64 run_uuid: "d89hh32kkd8d7a"
Runs содержат записи о запусках экспериментов:
run_uuid: "d89hh32kkd8d7a" experiment_id: 125 status: "FINISHED" start_time: 1590434000 end_time: 1590436800
В цом, диаграмма абстрагирует основные сущности и их связи, позволяя строить гибкие системы управления экспериментами, моделями, метриками на основе передовых практик MLOps.
@startuml
entity "Versioned Entity" {
entity "Tags" {
entity "Entities" {
entity "Latest Metrics" {
entity "Metrics" {
entity "Entity Tags" {
entity "Versions" {
entity "Parameters" {
entity "Entity Tags" {
entity "Entities" {
entity "Runs" {
entity "Tags" {
"Entities" ||--o{ "Entity Tags" "Runs" ||--o{ "Entity Tags" "Runs" }o--|| "Latest Metrics" "Runs" ||--o{ "Metrics" "Versions" ||--|{ "Entity Tags" "Entities" ||--|{ "Entity Tags" "Runs" ||--o{ "Parameters" "Entities" ||--|{ "Runs" "Runs" ||--o{ "Tags"
@enduml упрости эту диаграмму, там образом чтобы она подходила не только под mlflow но и под аналогичные инструменты, чтобы в ее концепции были заложены лучшие практики mlops, код напиши отдельно чтобы его можно было удобно скопировать.
Вот упрощенный вариант диаграммы, подходящий для концепции MLOps и аналогичных инструментов:
@startuml entity "Artifact" { * artifact_id : varchar(32) * version : int } entity "Tags" { * key : varchar(250) * value : varchar(5000) * artifact_id : varchar(32) } entity "Metrics" { * key : varchar(250) * value : double * artifact_id : varchar(32) * timestamp : bigint } entity "Parameters" { * key : varchar(250) * value : varchar(500) * artifact_id : varchar(32) } entity "Artifacts" { * artifact_id : varchar(32) * name : varchar(256) * location : varchar(256) } entity "Runs" { * run_id : varchar(32) * artifact_id : varchar(32) * start_time : bigint * end_time : bigint } "Artifacts" ||--o{Tags" "Runs" ||--o{ "Tags" "Runs" ||--o{ "Metrics" "Artifact" ||--|{ "Tags" "Runs" ||--o{ "Parameters" "Artifacts" ||--|{ "Runs" @enduml
В данной диаграмме я абстрагировал сущности до артифактов, запусков, метрик и тегов. Это позволяет применить ее для различных MLOps инструментов, не привязываясь к какому-то конкретному решению. Код диаграммы можно легко скопировать и использовать в своих проектах.
теперь подробно объясни диаграмму, все сущности, связи, значения, ключи, все очень подробно и с примерами
Давайте рассмотрим эту упрощенную диаграмму более подробно.
Artifact - это основной объект, который версионируется. Это может быть модель машинного обучения, набор данных, конфигурационный файл, requirements.txt и т.д.
Пример:
artifact_id: "ml_model_v1" version: 1
Tags - это метаданные, связанные с артифактами. Они используются для поиска, организации и отслеживания артифакт.
Пример тегов для ml_model_v1:
key: "type" value: "neural network" artifact_id: "ml_model_v1" key: "framework" value: "TensorFlow 2.0" artifact_id: "ml_model_v1"
Metrics - это набор показателей, которые измеряются и отслеживаются во время обучения или использования моделей.
Примеры метрик:
key: "accuracy" value: 0.92 artifact_id: "ml_model_v1" timestamp: 1571231165 key: "loss" value: 048 artifact_id: "ml_model_v1" timestamp: 1571231165
Parameters - гиперпараметры и конфигурационные настройки для артифактов.
Пример:
key: "learning_rate" value: 0.001 artifact_id: "ml_model_v1" key: "batch_size" value: 64 artifact_id: "ml_model_v1"
Artifacts - реестр всех артифактов с их метаданными.
Runs - записи о запусках процессов с артифактами. Хранят статистику о времени начала и окончания.
Связи:
Та кая модель данных является обобщенной и применима для разных инструментов MLOps.