Chat:Ru/2022-01-09

From CG community
Jump to navigation Jump to search

Vlad100: Сделал mcts на Python. Результат хуже чем был у Minimax. Первый ход нормально 2 timeout. Как я понимаю пора изучать C++?

Uljahn: если цель запустить mcts, то можно numpy с битбордами напрячь, а если хочешь за топ бороться, то без С++ на CG не обойтись

Uljahn: или rust/D как альтернативы

Vlad100: Окей. Значит шанс на оптимизацию всё же есть.

Uljahn: какая глубина у минимакса и сколько роллаутов в mcts?

Vlad100: 2 глубина кое как работала. В mcts если я правильно понял 1.

Vlad100: И то и другое на через какое-то количество ходов timeout

Uljahn: а время засекаешь?

Vlad100: На один ход?

Uljahn: если речь про UTTT, то на первый ход даётся 1 секунда вычислений, на следующие - по 100 мс, отсчёт идёт с получения первого инпута

Vlad100: Видел. Сейчас проверил mcts на один ход с 1 роллом 600мс.

Vlad100: Проверю ещё Minimax

Vlad100: Минимакс на 2 глубину в среднем 50-80мс

Uljahn: у меня на питоне с numpy 300-500 роллаутов за 100 мс, правда этого для MCTS мало, для легендарной лиги нужно 20к минимум

Vlad100: Тогда сейчас попробую на numpy переделать

Uljahn: 600мс это как-то дофига, ты там не deepcopy используешь? :smiley:

Vlad100: Так вот в чём дело

Vlad100: Тогда друго вопрос чем его можно заменить?

Vlad100: А хотя вроде уже сам нашёл

Vlad100: Окей заменив deepcopy на json получилось сделать 355мс

Uljahn: классика

Uljahn: с numpy будет ещё быстрее

Vlad100: Знаю но пока пытаюсь сделать то что будет быстро

Vlad100: Под numpy ты имел ввиду bitboard? Так как просто с numpy стало только хуже.

Default avatar.png ktotam: почему в некоторых только 2 Wood лиги?

aangairbender: ktotam это коммьюнити задачи

aangairbender: то есть как я понимаю дл них не было отдельного соревнования, просто выложили задачу и кто хочет решает

Uljahn: говорят, когда участников будет достаточно много, могут добавить лиги, как было с UTTT

Uljahn: обещали в этом году какие-то ивенты, типа мультиплеера недели, может тогда и запилят что-то подобное

Uljahn: Vlad100: numpy без битборд смысла не имеет

Uljahn: там вся суть в оперировании большими массивами непосредственно в памяти, а не через объекты питона

Uljahn: можешь, например, на первом ходе сразу заполнить массив рандомными числами, чтобы потом rand не вызывать, а брать из массива

Uljahn: или проверку на выигрыш свести в таблицу из 512 значений, и по значению минидоски в качестве индекса сразу определять выигрышность

Uljahn: нужно хардкодить по максимуму всё, что уместится в 100к кода, и что можно рассчитать на первом ходу, чтобы задействовать 768Мб памяти

aangairbender: 768мб оперативки дается каждому боту?

YurkovAS: да https://www.codingame.com/playgrounds/40701/help-center/languages-versions

aangairbender: о спасибо

aangairbender: видел раньше, но забыл)

Uljahn: на плюсах может и быстрее будет рассчитывать на лету всякие fastrand и invsqrt, но на питоне/numpy скорее всего будет быстрее слазить в память, хотя я не сумел разобраться, как numpy профилировать в VTune Profiler, так что тупо среднее время измеряю

Uljahn: вот бы numba ещё завезли для питона

YurkovAS: VTune не показывает вызовы numpy? там скорее всего надо его пересобирать с debug инфой. Обычные exe-ники тоже не показывает функции без debug сборки

aangairbender: а я блин себе комп собрал с amd и не могу теперь vtune пользоваться

aangairbender: там конечно есть аналог от amd, но мне как-то проще в visual studio. она умеет любые процессы профилировать (и можно дебаг символы подключать)

YurkovAS: профайлерами еще надо уметь пользоваться: он покаже медленное место, но обычно, сразу не поймешь как исправить.

YurkovAS: исправления обычно на архитектурном уровне. без профайлера все это можно найти

YurkovAS: в самом начале профайлер еще помогал, на очень банальных местах. а сейчас от него профита нет уже

YurkovAS: aangairbender зато много ядер? можно брутал тестер запускать

aangairbender: а я ним еще ни разу не пользовался

aangairbender: надо как-то попробовать

aangairbender: ну мне профайлер помогал на самом деле, особенно в расте (там ведь всякие bound checks нужно руками убирать в узких местах)

aangairbender: да и в плюсах показывал что оптимайзить в первую очередь

YurkovAS: он показывает: главное понять как улучшить это дело :)

aangairbender: YurkovAS диспетчер показывает 11 cpu

aangairbender: ой точней 12

aangairbender: ну и rtx 3070 есть, можно нейронки тренить)

YurkovAS: круто!

Vlad100: Я сейчас понял почему у меня MCTS нормально не работает. Я пытаюсь проверять все клетки а как оказалось есть ещё доп. правило про то в каком квадрате ходить.

Vlad100: Правда тогда не понимаю как вообще мой минимакс работал.

YurkovAS: aangairbender в maxN есть pruning, стр 20 https://project.dke.maastrichtuniversity.nl/games/files/phd/Nijssen_thesis.pdf

Default avatar.png PavRus: А можно где-нибудь историю этого чата прочесть? А то я иногда спрашиваю, а ответы уже не вижу(((

YurkovAS: https://cg.spdns.eu/index.php?title=Special:PrefixIndex&from=Ru%2F2021-03-05&prefix=Ru%2F&namespace=3000

Default avatar.png PavRus: Спасибо

aangairbender: Спасибо, почитаю

Default avatar.png anti_tenzor: Приветствую! Как посмотреть историю своего участия в Clash-of-Code ? Хотел ещё раз глянуть на тот мрак, который нарисовал...

Uljahn: notifications - show read

Uljahn: если ты свой код расшаривал, то можно будет в отчётах поискать

Default avatar.png anti_tenzor: Спасибо! Нашел. Даже странно, что так закопано. Думал, должно где-то в профиле оставаться доступ к истории.

Uljahn: ничего странного, клэши - это развлечение, не более

Uljahn: мультиплееры посерьёзнее уже, но тоже зоопарк, а контестов нормальных давно не было