Size: a a a

2020 May 14

AV

Alexey [noxwell] Vet... in catboost_ru
Alexey Belyaev
Привет! =)

Вчера задал два вопроса)

1) Доброй ночи, коллеги! Решил воспользоваться долгожданной функцией utils.quantize и получил такое:
_catboost.CatBoostError: catboost/libs/data/load_and_quantize_data.cpp:52: Categorical features are not supported in block quantization

Правильно ли я понял, что киллер фича релиза не работает с Categorical features вообще? =(

Есть ли какие-то способы с этим работать (без предварительного one-hot и тп)?

Ну, и планируется ли поддержка категориальных фич в будущем? В ближней перспективе или дальней?

2) Как раз про отдельный метод quantize:

И в догонку второй вопрос. Я убрал категориальные фичи. Теперь у меня есть train и eval файлы по 22Г. Я запускаю quantize для них как в примере, и на подготовку расходуется 25Г RAM. После чего У видеокарт запрашивается 22Г памяти, которых в них нет – там 8Г + 6Г
Что мне следовало сделать, чтобы что-то заработало? =)
Можно ли как-то ограничить используемую память имеющимися на машинке ресурсами?

PS попробовал параметр quantize used_ram_limit, для которого нет описания. Получил лог на 60МБ из сообщений
Resource CPU RAM: functionWithResourceUsage.ResourceUsage(10000) > ResourceQuota(0)
пришлось прервать

PPS удалось запустить fit на CPU, но использована вся RAM. Выглядит так, будто quantize строит пулы на основе доступной памяти CPU. Но тогда это делает невозможным использование GPU, если его память на машине меньше, чем RAM. И скорость на CPU совершенно неприемлемая. Нужно плашки оперативки вынимать, чтобы все заработало? =) Поможет ли ulimit, например?
А сколько примерно объектов в датасете на 22G?
источник

AB

Alexey Belyaev in catboost_ru
Stanislav Kirillov
Ты пока не завел ишью под это дело?
Еще нет. У меня все еще была надежда, что не так что-то делаю(
источник

AB

Alexey Belyaev in catboost_ru
Alexey [noxwell] Vetrov
А сколько примерно объектов в датасете на 22G?
318 фич, ~125кк объектов
источник

AB

Alexey Belyaev in catboost_ru
Alexey [noxwell] Vetrov
А сколько примерно объектов в датасете на 22G?
Ошибся. ~25кк в датасете на 22Г.
125 - это в боевом, который даже не квантуется
источник

SK

Stanislav Kirillov in catboost_ru
правда странно, должно быть около 8ГБ памяти после квантования (по 1 байту на флотную фичу, 4 байта на таргет, 4 байта на вес, если он есть)
источник

SK

Stanislav Kirillov in catboost_ru
поправил, на 8гб, потому что вместо 318 прочитал 138)
источник
2020 May 16

MF

Maxim FromSiberia in catboost_ru
Добрый день!

CatBoost плохо определяет learning rate.

- Беру обуч мнво (с весами), 10 млн строк train, 10 млн строк test.
Скачать можно здесь: https://yadi.sk/d/5_N9iuv1YpTNfA
- Запускаю обучение командой

catboost-0.23.exe fit -f train10000.csv --cd catb.cd --test-set test10000.csv --delimiter , --loss-function Logloss -i 1000 --task-type CPU --train-dir trdir

- Вижу в логе

Learning rate set to 0.308254
...
bestTest = 0.3340715208
bestIteration = 109

Вопросы:

- По ощущениям learning rate 0.3 - это очень много. Верные ли ощущения?
- test10000.csv содержит веса, т.к. является частью исходного множества. Проблема ли это?
- Почему CatBoost подобрал такой learning rate, что были использованы только 110 итераций вместо ~1000? Это ожидаемо? Это плохой подбор learning rate? Как можно улучшить ситуацию?

Дополнительно: Если уменьшать объем train и test мнва, то leraning rate снижается: 10m -> 0.3, 1m -> 0.17, 100k -> 0.08.
Ожидаемо ли это? Как объяснить?

Спасибо.
источник

IL

Ivan Lyzhin in catboost_ru
Автоматический learning_rate выставляется на основании нескольких эвристик, которые показали наилучшие результаты на нашем наборе датасетов. Эти эвристики учитывают loss_function, кол-во итераций и кол-во объектов в трейне. Естественно, подобрать эвристики для каждого  датасета невозможно. Никаких гарантий наилучшего результата тут дать нельзя, но обычно результат получается достаточно неплохим и близким к идеальному. Тем не менее, всегда имеет смысл попробовать другие значения параметра в поисках лучшего качества. Если вам удастся подобрать learning_rate с  результатом, который будет сильно лучше, нам  интересно узнать, насколько он отличается от автоматического.
источник

MF

Maxim FromSiberia in catboost_ru
Ivan Lyzhin
Автоматический learning_rate выставляется на основании нескольких эвристик, которые показали наилучшие результаты на нашем наборе датасетов. Эти эвристики учитывают loss_function, кол-во итераций и кол-во объектов в трейне. Естественно, подобрать эвристики для каждого  датасета невозможно. Никаких гарантий наилучшего результата тут дать нельзя, но обычно результат получается достаточно неплохим и близким к идеальному. Тем не менее, всегда имеет смысл попробовать другие значения параметра в поисках лучшего качества. Если вам удастся подобрать learning_rate с  результатом, который будет сильно лучше, нам  интересно узнать, насколько он отличается от автоматического.
При автоматическом подборе лр учитываются ли веса инстансов в трейнсете?
источник

MF

Maxim FromSiberia in catboost_ru
Например, если 90% весов равны нулю, то кол-во объектов уже другое.
источник

IL

Ivan Lyzhin in catboost_ru
Не учитываются.
источник

MF

Maxim FromSiberia in catboost_ru
Ivan Lyzhin
Не учитываются.
Не баг ли это?
источник

D

Denis in catboost_ru
Добрый день. Есть ли возможность сделать кастомный callback? Мне необходимо останавливать обучение по истечению определенного времени.
источник

MF

Maxim FromSiberia in catboost_ru
Ivan Lyzhin
Не учитываются.
Учитываются ли веса в test множестве?
источник

IL

Ivan Lyzhin in catboost_ru
Веса тестового множества учитываются при расчете метрик.
источник

MF

Maxim FromSiberia in catboost_ru
/stat@combot
источник

C

Combot in catboost_ru
Total messages: 7203
источник
2020 May 17

ВЯ

Виталий Ястреб... in catboost_ru
/stat@combot
источник

C

Combot in catboost_ru
Total messages: 7209
источник

MF

Maxim FromSiberia in catboost_ru
Добрый день! Подскажите, пожалуйста, умеет ли catboost-0.23.exe обучаться на двух GPU, подключенных к одному серверу? Судя по опции --devices умеет. Есть ли ориентировочная информация о приросте производительности при подключении второго GPU? Стоит ли ожидать 2х ускорения? Спрашиваю, т.к. стоит вопрос о покупке второго GPU.
источник