Оптимизация потребления памяти в ML-библиотеке LANCETNICНедавно я столкнулся с проблемой: моя библиотека lancetnic при обучении на больших текстовых датасетах просто перегружала оперативную память. На ноутбуке с 16 ГБ RAM модель не могла обучиться даже на 25 тыс. строк. Я начал разбираться и нашёл пару причин критического перерасхода памяти. Читать далее
Возможно, вы замечали, что Java-приложение может превышать лимит памяти, указанный в параметре -Xmx (максимальный размер кучи). Дело в том, что JVM помимо кучи использует и другие области памяти. Давайте начнем со структуры памяти Java-приложения и источников потребления памяти. Читать далее
Многие Go программисты знакомы с bytes.Buffer. Одно из его преимуществ состоит в том, что он позволяет избегать выделений памяти в куче по той же схеме, что и "оптимизация коротких строк" (small buffer/size optimization): type Buffer struct { bootstrap [64]byte // для избежания аллокации малых слайсов в куче // ... другие поля } Есть только одна проблема. Эта оптимизация не работает. К концу этой статьи вы узнаете, почему эта оптимизация не работает и что мы можем с этим сделать. Читать дальше →
Главная жалоба на чат-ботов всегда одна: «он меня не помнит». Своей памяти у LLM нет, и всё, что она якобы помнит, кладём в контекст мы сами.Рассказываю, как устроена память ассистента в проде на 16 тысячах раундов: файлы, PostgreSQL с pgvector, судья на дешёвой модели, выжимки, политика доступа между агентами. И что из задуманного так и осталось лежать в библиотеке. Читать далее