Содержимое
Продолжение: o1-pro: Реализуем Parallel.ForEachAsync с регулируемым "на лету" параллелизмом Часть 1 тут. Но доверять LLM (даже с тестами) - чревато, особенно в такой сложной задаче, поэтому кроме собственного теста, я попросил Евгения Пешкова (автора библиотеки ConcurrencyToolkit и довольно экспертного чувака по многопоточке) поревьюить результат, за что ему большое спасибо. Вот его комментарии: 1. Сейчас пермит добывается заново на каждый обрабатываемый элемент, это убивает эффект от распараллеливания, если элементы обрабатываются быстро. Эффективнее захватывать пермит один раз при старте воркера, а при изменении лимита убивать воркеров с номерами >= NEW_LIMIT. 2. Используется обычный lock для MoveNext, а в оригинальном ForEachAsync — SemaphoreSlim(1) в качестве асинхронного лока, что предотвращает блокировку тредпула, если MoveNext медленный Во всяком случае, критических проблем обнаружено не было - и это уже хорошо. А PR с исправленными замечаниями приветсвуется :) Кстати, у Жени есть великоплепный Telegram-канал про .NET, а еще множество глубоких докладов, которые я тоже могу горячо рекомендовать - сейчас, с развитием нейронок, глубокие знания о том, как все устроено под капотом получают еще большую ценность. Код библиотеки и тесты тут. Итоги итогов Тандем лучших публичных нейронок на сегодня (o1-pro + Sonnet 3.5) в написании потокобезопасного кода проявил себя довольно достойно. Конечно, чтобы делать такие выводы уверенно необходимо, как минимум, повторить удачный эксперимент несколько раз в подряд, ну и желательно на разных задачах, но у нас просто нет столько времени. В принципе, если говорить конкретно о модели o1-pro, то одна из основных ее фишек именно в стабильности результата (в отличие от o1, которая может отдавать правильный ответ через раз), поэтому с высокой долей вероятности результат будет повторяемым. Что еще может o1-pro? Много чего. В целом, все самые сложные задачи на reasoning (НЕ на знание библиотек) o1-pro должна решать сильно лучше остальных моделей. Кроме того, у нее довольно большой контекст в 200к токенов на вход (впрочем, как и у o1), поэтому ей спокойно можно докидывать, например, всю документацию к вашей любимой библитеке и почти наверняка эта модель будет наиболее внимательна к деталям. Еще, я пытался решить с o1-pro довольно сложную задачу на графы, но в полной мере это сделать так и не удалось - после нескольких итераций (код, тесты, output тестов LLM, фикс и все по новой), она думала по ~10 минут и стабильно предлагала неверное решение. Там весьма хитрая и запутанная логика обработки циклов внутри графа и o1-pro в ней явно путается. Удивительно, но в итоге последний затык мне смогла разрешить только старая добрая Sonnet 3.5 - по моим наблюдением, у Sonnet вообще как-то все очень хорошо с графами. А какие самые сложные задачи на программирование доводилось решать вам с помощью LLM? — Пробелов.NET