tgoop.com/quant_prune_distill/397
Create:
Last Update:
Last Update:
Can LLMs write better code if you keep asking them to “write better code”?
[Блогпост][GitHub]
Забавный и поучительный блогпост про то, как LLMка (Claude 3.5 Sonnet) итеративно оптимизировала код под запросами вида `write better code`
.
Постановка задачи следующая. Требуется написать код на Питоне для задачи а-ля LeetCode:
Write Python code to solve this problem:
Given a list of 1 million random integers between 1 and 100,000, find the difference between the smallest and the largest numbers whose digits sum up to 30.
Исходное решение
Рабочий, но не самый эффективный код. Подсчет цифр в числе реализован через приведение его к строке, парсинг строки на цифры с последующим их суммированнием.
Итерация 1
Claude замечает, что возможных вариантов чисел меньше, чем всего чисел и предпосчитывает сумму цифр для всех чисел от 1 до 100,000 и складывает в byte array. Кроме того, LLMка навела немного синтаксического сахара и обернула код в классы и методы. Ускорение 2.7x по сравнению с бейзлайном.
Итерация 2
Claude кладет сумму цифр в numpy array (что дает векторизацию подсчета сумм) и дополнительно использует concurrent-futures для параллелизации. Ускорение 5.1x по сравнению с бейзлайном. Однако изначальное решение было с багами и его пришлось немного фиксить.
Итерация 3
Небольшой и бесполезный рефактор, который замедлил код. Ускорение 4.1x по сравнению с бейзлайном.
Итерация 4
Claude предложил использовать numba с JIT-compiler и параллелизмом и asyncio для многопоточности. Ускорение 99.7x по сравнению с бейзлайном.
Далее автор изначально подает промпт, просящий оптимизировать все что только можно и нельзя (предлагая даже 💲модельке). Модель сходу выдает 59x ускорение благодаря numba + JIT (но без
parallel=True
).И промпт требующий улучшения кода уже более подробный:
Your code is not fully optimized, and you have been fined $100. Make it more optimized.
Но Claude обиделся, и код стал медленее (9.1x ускорение) и с багами (возможно, привык что его обманывают на деньги).
Несколько последующих итераций выдали версии с ускорением 65x-99.7x и с косяками. Т.е превзойти прямолинейную стратегию не удалось.
Вывод
Топовые LLM - мощные ассистенты для программиста, но за ними пока требуется глаз да глаз и экспертное мнение. Кожаные мешки все еще нужны. Пока...
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/397