1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/didiopensource-dlflow

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
CONFIGURATION.md 10 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 05:50 5458676

Конфигурация DLFlow

Конфигурация

Формат файла конфигурации — hocon. Формат hocon похож на json, но поддерживает более гибкий формат, позволяет свободно добавлять комментарии и даже ссылаться на другие файлы конфигурации. Подробнее о hocon можно узнать в HOCON (https://github.com/lightbend/config/blob/master/HOCON.md).

В DLFlow конфигурация верхнего уровня по умолчанию использует прописные буквы и символы подчёркивания в качестве имён конфигурации. Для путей конфигурации рекомендуется использовать абсолютные пути, чтобы избежать ненужных ошибок. Пути HDFS позволяют использовать не-URI формат, пользовательские конфигурации должны обеспечивать правильность доступа.

Вот пример типичной конфигурации:

// Hocon for DLFlow

STEPS : "merge, encode, predict, evaluate, train, UDTs",

MODEL_TAG : "model tag",
MODEL_DATE : "20200101",
FEATURE_TAG : "feature tag",
FEATURE_DATE : "20200101",
PRIMARY_KEYS : "id",
LABELED_KEYS : "label",

MODELS_DIR : "/<path>/static_models",
TASKS_DIR : "/<path>/static_tasks",
LOCAL_WORKSPACE : "<path>/local_workspace",
HDFS_WORKSPACE : "/<hdfs_path>/hdfs_workspace",

SPARK : { include file("/<conf_path>/spark_conf/spark.conf") },
MODEL : { include file("/<conf_path>/model_conf/model.conf") },
BUCKET : { include file("/<conf_path>/bucket_conf/bucket.conf") },
MERGE : {
    config_file : "/<conf_path>/merge_conf/merge.conf",
    seed_sql : "/<conf_path>/merge_conf/seed.sql",
    fit : true,
}

STEPS

Указывает задачи, которые необходимо выполнить в DLFlow, фреймворк имеет 5 встроенных предопределённых задач:

  • merge — объединение признаков;
  • encode / encoding — кодирование признаков;
  • train / training — обучение;
  • evaluate / evaluating / eval / test — оценка;
  • predict / predicting / pred — прогнозирование.

Кроме того, фреймворк позволяет пользователям определять собственные задачи (UDT, User Define Task), для использования UDT также необходимо настроить STEPS. Задачи STEPS разделяются запятыми, порядок выполнения задач может быть произвольным, фреймворк автоматически упорядочивает выполнение задач в зависимости от их зависимостей.

MODEL_TAG

Метка модели, используется вместе с MODEL_DATE для создания уникального идентификатора модели машинного обучения.

MODEL_DATE

Дата модели, используется вместе с MODEL_TAG для создания уникального идентификатора модели машинного обучения.

FEATURE_TAG

Метка признака, представляет версию признака. Она напрямую связана с выбором признаков и способом обработки признаков.

FEATURE_DATE

Дата признака, указывает на разные разделы версии признака.

PRIMARY_KEYS

Первичный ключ признака. Несколько первичных ключей могут быть разделены запятыми.

LABELED_KEYS

Метки для обучения. Несколько меток могут быть разделены запятыми.

MODELS_DIR

Каталог для хранения пользовательских моделей.

TASKS_DIR

Каталог для хранения пользовательских задач. Если он не нужен, его можно не указывать.

LOCAL_WORKSPACE

Локальный рабочий каталог, рекомендуется установить, иначе будет использоваться значение по умолчанию ~/dlflow_workspace.

HDFS_WORKSPACE

Рабочий каталог HDFS, рекомендуется установить, иначе будет использоваться значение по умолчанию ~/dlflow_workspace

SPARK

Конфигурация, связанная со Spark, использует имена конфигурации, принятые в Spark. Например:

SPARK : {
    // Установить режим задачи spark
    spark.submit.deployMode: "client",

    // Установить размер памяти исполнителя
    spark.executor.memory: "8G",

    ...
}

MODEL

Пользовательская конфигурация модели.

MODEL :  {
    model_name: "model_name",
    input_name: "input_name"
}

Для получения дополнительной информации см. MODEL_DEV.md.

BUCKET

Пользовательская конфигурация сегмента признаков.

BUCKET : {
    <bucket_name> : {
        features: [
            "feature_name_1",
            "feature_name_2",
            ...
        ],
        is_encode: true,
        method: "pnorm",
        param: {"p": 1.0}
    },

    ...
}
  • <bucket_name> — имя сегмента признаков;
  • features — признаки, содержащиеся в этом сегменте;
  • is_encode — следует ли выполнять кодирование и нормализацию для этого сегмента (по умолчанию true);
  • method — метод нормализации (по умолчанию minmax);
  • param — параметры метода нормализации (значения по умолчанию см. в таблице ниже).
Метод нормализации Параметры и значения по умолчанию
minmax "min": 0.0, "max": 1.0
zscore "withMean": true, "withStd": true
pnorm "p": 2.0

MERGE

Связанная с объединением признаков конфигурация.

MERGE : {
    config_file : "/<conf_path>/merge_conf/merge.conf",
    seed_sql : "/<conf_path>/merge_conf/seed.sql",
    fit : true
}
  • config_file — файл конфигурации объединения признаков;
  • seed_sql — начальное значение объединения признаков;
  • fit — если установлено значение true, каждый раз будет выполняться операция fit, если false, будет использоваться уже существующая информация о слиянии.

Более подробную информацию об объединении признаков см. в разделе «Объединение признаков» (../../../dmflow/README.md)

Пользовательская конфигурация

Поскольку пользовательским моделям и задачам может потребоваться больше параметров конфигурации, DLFlow предоставляет функцию пользовательской конфигурации.

Чтобы создать пользовательскую конфигурацию, сначала необходимо импортировать модуль конфигурации:

from dlflow.mgr import config

Определение конфигурации

При определении модели или задачи добавьте атрибут класса cfg и используйте метод setting() класса config для настройки параметров конфигурации.

@model.reg("my_model")
class MyModel:

    cfg = config.setting(
        config.req("<CONF_NAME_1>"),
        config.opt("<CONF_NAME_2>"),
        config.opt("<CONF_NAME_3>", "DEFAULT_VALUE")
    )

    ...

Уровень конфигурации

При настройке параметров конфигурации необходимо указать уровень конфигурации. В DLFlow параметры конфигурации делятся на три уровня:

  • system: необходимые параметры для запуска фреймворка, пользователи должны предоставить значения параметров при запуске фреймворка, этот тип параметра не позволяет ссылаться на другие параметры;
config.setting(
    config.sys("CONF_NAME")
)
  • require: параметры, необходимые для запуска задачи или модели, рекомендуется предоставлять значения этих параметров через файл конфигурации или параметр командной строки;
config.setting(
    config.req("CONF_NAME")
)
  • option: необязательные параметры, рекомендуется предоставить значение по умолчанию при определении, пользователю не нужно предоставлять значение в файле конфигурации.
config.setting(
    config.opt("CONF_NAME", "DEFAULT_VALUE")
)

Ссылка на конфигурацию

# Существующая конфигурация item config.LOCAL_WORKSPACE
cfg = config.setting(
    config.opt("MY_CONF_DIR", "$LOCAL_WORKSPACE/my_conf_dir")
)

После активации конфигурации ссылочный параметр $LOCAL_WORKSPACE будет автоматически заменён соответствующим значением.

print(config.LOCAL_WORKSPACE)
# /local_dir

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/didiopensource-dlflow.git
git@api.gitlife.ru:oschina-mirror/didiopensource-dlflow.git
oschina-mirror
didiopensource-dlflow
didiopensource-dlflow
master