Была выбрана модель классификации текстов. Модель была модифицирована: был убран класс neutral (не смог найти нормальных данных с твиттера с тремя метками, везде только negative и postitive). Был собран докер образ (директория train_model) со следующей структурой рабочей директории:
.
└── wd/
├── data/
│ ├── data0.csv
│ ├── data1.csv
│ └── ...
├── model/
│ ├── ...
│ ├── config.json
│ ├── model.bin
│ └── ...
├── results/
│ └── log.log
└── scripts/
├── data.py
├── main.py
└── train.py
Все директории маунтятся к диску (scripts тоже, что было удобно при разработке, но не совсем правильно для прода). При запуске контейнера запускается скрипт main.py
. В файле train.py
содержатся функции для обучения моделей. Модель цикл обучения модели запускается для каждого файла в папке data
.
Для того, чтобы построить лог использовал небольшую выборку данных, поскольку обучение проходило на CPU, поэтому такие неплохие результаты. Основная сложностью на данном этапе стали:
- Устновка модуля провайдера docker для ariflow (для локального инстанса)
- Разбирался как дать доступ к ГПУ (разобрался, но по техническим причинам не смог)
- Поиск данных для обучения (долго пытался найти данные с тремя метками: positive/neutral/negative)
- Разбирался как заставить докер
dind
видеть собранные образы.
Для FileSensor в веб интерфейсе Airflow был создан Connection.
Докер контейнеры для каждого этапа имеют такую же структуру как и контейнер для обучения из прошлого пункта.
В качестве видео использовался этот ролик.
Из видео при помощи ffmpeg
была извлечена звуковая дорожка.
Из неё был извлечен следующий текст (оформление было добавлено вручную, знаки препинания проставила модель):
Here we go..
You're just like an angel.
Your skin makes me cry.
You flow like a feather.
In a beautiful world.
You're so very special.
I wish I was special.
But I'm a creep.
And I'm always a fool.
What in the hell am I doing here?.
I don't belong here.
I don't care the hurts.
I wanna have control.
I ain't want a perfect body.
I want a perfect soul.
I want you to notice.
When I'm not around.
You're so special.
I wish I was special.
But I'm a creep.
And I'm always a fool.
What in the hell am I doing here?.
I don't belong here.
Oh, oh, now she's.
Running out the door.
She's running out.
She'll run, run, run, run.
Run, run.
Whatever makes you happy.
Whatever you want.
You're so special.
I wish I was special.
But I'm a creep.
And I'm always a fool.
What in the hell am I doing here?.
I don't belong here.
I don't belong here
Модель суммаризации выдала следующий результат:
A short story of a love story about the life of a man who's got stuck in the room atthe end of the year, and it was a "creep" and I'm a creep.
Он был сохранен в пдф (inference_data/reports
).
Каждому этапу соответсвует докер контейнер. Вся кодовая база помещалась в директорию airflow/data (поскольку код маунтится в контейнеры). Собранные образы пушились в регистри docker hub.
Из сложностей:
- Большой объем работы