-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve week06/a2c-optional #397
Comments
Когда я сдавал это задание, у меня была вот такая функция def print_signature(d, indent=0):
for key, value in d.items():
print(' ' * indent + f'{key:<20}: ', end='')
if isinstance(value, list):
print('list')
print_signature(value[0], indent=indent+4)
if isinstance(value, np.ndarray):
print(f'ndarray {value.shape!s:<25} {value.dtype!s:<10}')
elif isinstance(value, torch.Tensor):
print(f'tensor {value.shape!s:<25} {value.dtype!s:<10}')
elif isinstance(value, dict):
print('dict')
print_signature(value, indent=indent+4)
else:
print(type(value))
print_signature(runner.get_next()) Пример вывода:
|
Related: #181 |
Сейчас студент прислал пожелания на следующий год:
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
via @q0o0p
Закончила проверять week6 (но некоторые всё ещё досдают)
В ШАД эту домашку сдали 108 человек, из них 26 сдали ActorCritic. Один прислал Кунг-Фу из week 08. В ВШЭ домашку сдали 27 человек, один из них ActorCritic. Многие сдали и то и другое. Трое сдали ActorCritic на tensorflow (двое из них на TF2). Двое сдали reinforce на tensorflow.
(в прошлом году, судя по таблице, ActorCritic сдали ~6 человек).
На проверку ШАДа + ВШЭ ушло 55 часов чистого времени, из этого 35 часов на 26 работ ActorCritic. В среднем 10 минут на reinforce и 1 час 20 минут на ActorCritic.
Почему на ActorCritic так много времени:
В целом эта домашка, в отличие от, например, ActorCritic-а в 8й неделе, почти полностью "творческая", то есть студент всё сам пишет, а не заполняет однострочные "<YOUR_CODE>". Как следствие, очень много вариантов, как в глобальном смысле построить взаимодействие классов, так и локально как что-то реализовать, и как задать константы. И столько же много ошибок.
Какие были ошибки:
В модели:
В Policy:
В ComputeValueTargets:
В лоссах:
В целом:
По графикам:
И в чате, и в Anytask студенты жаловались, что нет чёткой инструкции, как выводить график реворда.
Тем, кто делал на pytorch или на TF2, tensorflow_summaries не подходило.
Ответ "... mean 100 ..." студентов не удовлетворяет, им надо функции, которые это выводят. Совет "Бери питон и выводи" (как я делала в своё время) им не подходит. И правильно. Даже если они согласятся это делать сами, многие ошибутся.
Я скинула в чат PR с обновлённым atari_wrappers с функциональностью для вывода реворда без TF.
Некоторые это использовали в домашке, кто-то использовал TF, кто-то сам выводил. Но чат читают не все, а за обновлениями репозитория следит ещё меньше человек. И многие выводили реворд неправильно.
То есть, нельзя даже посмотреть на работу и провести sanity check по графику реворда. Это проблема и для студента, и для проверяющего.
То есть, при проверке, чтобы понять, что код работает (не тот график - всё равно что нет output'a), надо либо добавлять построение графика и запускать код, либо очень долго и внимательно вчитываться во все участки кода. Хорошо, если ошибки есть, тогда их можно найти. Но если их нет, то нет и гарантии, что их действительно нет, а не просто я их не заметила.
Было много работ, где с виду всё правильно, но реворд плохой, и надо было долго вчитываться во всё по нескольку раз и дебажить, чтобы найти, в чём проблема.
И, даже если всё верно, всё равно что-нибудь да есть, т.к. задание большое. Вот у человека всё верно, а он говорит, что-то tensorflow медленно работает, помогите найти почему.
Из этого всего следует, что потратить сильно меньше времени на ActorCritic невозможно.
Это я сейчас пишу для того, чтобы поднять этот вопрос на будущее. Если в следующем году студенты ШАДа будут такие же молодцы и сдадут столько же (или больше) ActorCritic'ов, очень вероятно, что у меня (или у того, кто будет это проверять) не будет столько времени. И придётся понизить качество проверки до неприемлемого уровня.
Как этого избежать:
The text was updated successfully, but these errors were encountered: