Andrew

1.3K posts

Andrew

Andrew

@scratchboom

-1/12, if you know what i mean

Beigetreten Haziran 2009
209 Folgt12 Follower
Andrew retweetet
Garrett Johnson
Garrett Johnson@garrettkjohnson·
Back from some time off programming with a Jump Flood Algorith demo to ease back in! JFA can be used to create a screen SDF from a model in real time - useful for things like silhouette outlines or any other visual effects. More effects coming up! ✨ #threejs #webgl #gamedev
English
7
57
621
50.3K
Andrew retweetet
Dudes Posting Their W’s
Dudes Posting Their W’s@DudespostingWs·
This dude mastered the art of “reverse walking.”
English
117
488
12.9K
2M
Andrew retweetet
AssembleDebug (Shiv)
AssembleDebug (Shiv)@AssembleDebug·
Google Calculator - it's a feature, not a bug 🫠 Thanks to chandrashekar316 for sharing
English
31
17
673
57K
Andrew retweetet
Независимый взгляд 💥
🐇На охоте собака бежит за зайцем по запаху и не смотрит по сторонам. Заяц, понимая это, делает вот такой «финт ушами» и мастерски уходит от погони.
Русский
24
134
2.1K
133.9K
Andrew retweetet
greg
greg@greg16676935420·
It’s happening
greg tweet media
English
615
1.5K
27.5K
1.2M
Andrew retweetet
AO
AO@AO_btc_analyst·
#BITCOIN THE 4 STAGES.
AO tweet media
English
66
299
1.3K
58K
Andrew retweetet
Наблюдатель✗
Наблюдатель✗@The_Observer01X·
Бл...))) Н6евероятно интересно оказалось)
Русский
10
44
334
24.2K
Andrew retweetet
† lucia scarlet 🩸
† lucia scarlet 🩸@luciascarlet·
can YouTube FUCK OFF with this auto translation bullshit nobody fucking asked for I set my language to English, I even fucking set my REGION to United Kingdom, and it STILL translates random video titles and descriptions for NO FUCKING REASON look at the channel. this is a TechRax video. HE DOES NOT MAKE GERMAN VIDEOS and it’s not even every video title that does this it’s just randomly fucking selected and for WHAT JUST LEAVE THE FUCKING VIDEOS ALONE AND SERVE THEM THE WAY THE CREATORS WANTED GOOGLE FFS
† lucia scarlet 🩸 tweet media
English
348
708
12.9K
356.8K
Andrew retweetet
Design Chief Priest
Design Chief Priest@dnaijatechguy·
Elevenlabs just open sourced a bunch of their audio UI components. These look really good. Link on the thread
Design Chief Priest tweet media
English
25
129
2.2K
122.6K
Andrew retweetet
Documenting Saylor
Documenting Saylor@saylordocs·
Bitcoin vs Nvidia and Gold 👀
English
144
753
4.2K
668.9K
Andrew retweetet
Csaba Kissi
Csaba Kissi@csaba_kissi·
This is the best pomodoro timer ever for coders.
English
66
33
755
93.4K
Andrew retweetet
Jay Dwivedi
Jay Dwivedi@jaydwivedi_·
i wasn't kidding (there were 3 more paid apps)
Jay Dwivedi tweet media
English
295
252
7.4K
781.9K
Andrew retweetet
Ashish
Ashish@Ash_uxi·
blur. align. unblur.
English
105
307
14.4K
1.5M
Andrew retweetet
The Figen
The Figen@TheFigen_·
🤣🤣
QME
170
332
4.9K
316.8K
Andrew retweetet
Dima
Dima@softwarevlogger·
Локальные LLM: Введение. Что происходит, когда вы запускаете LLM? Нашел, офигел от плотности информации, перевел и адаптировал для вас. Ссылка на источник в следующем твите. Работа модели по другому называется inference (вывод) или использование весов модели. Вывод — по сути предсказание следующего токена на основе вашего ввода и всех токенов сгенерированных на предыдущих шагах. Все это образует последовательность. Токены — это не слова. Токены это кусочки обозначающие текст, который видит модель. В модели они представлены целыми числами или ID токенов. Токенизация — разбиение текста на токены. Распространенные алгоритмы: BPE (byte pair encoding), SentencePiece. Конкретные токены отличаются в разных моделях. Вот иллюстративный пример: “hello” \- может быть 1-3 токена, “internationalization” 5-8 токенов. Контекстное окно \- максимальное количество токенов, которые может увидеть модель за раз. Чем больше context тем больше VRAM для KV кеша потребуется и тем медленнее будет декодировка. В процессе вывода модель предсказывает следующий токен перемножая свои веса. Веса модели \- это миллиарды выученных параметров. Параметры модели \- миллиарды чисел или весов, которые модель усваивает в процессе обучения. Эти веса кодируют все что модель знает: шаблоны, язык, факты, “мышление”. Когда вы используете модель, она использует эти параметры, чтобы предугадать следующий наиболее вероятный токен. Один токен за раз. Шаг за шагом. Т.е. модель не дает ответ, а выдает наиболее вероятные кусочки текста составляя их в цепочки пока не решит, что выдача завершена сгенерировав спец стоп токен \`\<|endoftext|\>\` Получается цикл: модель получает ввод, выбирает следующий токен, добавляет его к выдаче и передает всю новую выдачу обратно себе на вход. Но модель это чуть больше чем просто файл с весами: * Архитектура нейросети: трансформер (слои, головы внимания heads, RoPE, MQA/GQA об этом ниже) * Веса: миллиарды изученных чисел. Параметров, не токенов, но вычисленных из токенов * Токенизатор: для кодирования текста в токены. BPE/SentencePiece * Конфиг: метаданные, спец токены, лицензия и тд * Иногда шаблоны чатов необходимые для chat/instruct моделей. Иначе эти модели выдают мусор Модели отличаются по количеству параметров * 7B означает 7 миллиардов чисел * Чем модель больше тем она мощнее, но тем больше VRAM и вычислений требуется для ее работы * Модели вычисляют вероятность следующего токена (гоняя softmax по своему словарю vocab) тут у модели будет несколько токенов на выбор * Далее она выбирает один или с наиболее высокой вероятностью (greedy) или начинает креативить в зависимости от temperature, top-p и других настроек. * Потом она добавляет этот один токен к тому что у нее уже есть и повторяет заново как я и описал выше. * Все токены из текущей сессии находятся в KV кеше Как модель выбирает токен (sampling): * greedy \- выбирает самый вероятный как робот * temperature: немного расслабляет вероятности и позволяет модели креативить * top-k: выбирает из top k * top-p: выбирает из самой маленькой группы с вероятностями ≥p * Чтобы получить детерминированную выдачу \- устанавливаем seed и отключаем sampling Больше там никакой магии нет. Большинство современных моделей основаны на архитектуре Transformer. Они специально задизайнены для последовательных данных таких как наш язык. Трансформеры могут смотреть назад на предыдущие токены чтобы решить какие из них наиболее важны для следующего предсказания. Трансформер прогоняют вывод через множество слоев уточняя вывод, используют специальные механизмы “внимания” чтобы сфокусировать предсказание на важных частях ввода и контекста. Каждый новый токен проходит через весь этот пирог. Каждый слой состоит из: * Self-attention или внимание: определяет какие из токенов важны для текущего предсказания * MLPs (multi layer perceptrons): чтобы добавить нелинейность и перчинку * Стабилизация residual \+ norms чтобы это не развалилось и работало с глубокими сетями * Позиционное кодирование (RoPE) чтобы модель знала где токен находится в последовательности и не путала кота и котастрофу :-) Накладывая десятки и сотни таких слоев трансформер пытается “понять” ваш запрос, контекст и историю разговора. Чем больше слоев в голов внимания у модели тем умнее модель. Чтобы работать с моделью ее надо вгрузить в VRAM. Количество должно позволить вгрузить 1\. Веса 2\. KV кеш. Примерные формулы: FP16 \- 2 байта на параметр (7B \- 14Gb), 4 бита \- уже 3.5Gb. Учитывайте еще 10-30% на оверхед. KV кеш стоит около 0.5 мег на токен и зависит от модели. Т.е. 4к токенов \- это еще 2 гига памяти. Некоторые рантаймы позволяют квантизировать и кеш в том числе позволяя экономить большое количество памяти. Получается, что недостаточно просто впихнуть модель в память, надо чтобы она еще где\-то работала. И чтобы она работала быстро пригодится Memory bandwidth \+ GPU FLOPs. Именно поэтому некоторые старые видюхи у которых шина пошире будут работать быстрее чем новые модели с более узкой шиной. Так NVIDIA RTX 2080 Ti (2018, 352-битная шина) имеет \~616 ГБ/с bandwidth и часто обходит RTX 4060/4070 (2023, 128/192-битные шины, \~288–504 ГБ/с) в LLM-задачах, несмотря на меньшее количество CUDA-ядер. Вычисления можно переложить на CPU, но это существенно ощутимо болезненно медленнее. Квантизация модели дает колоссальную экономию памяти зачастую при незначительной потере качества. 4-бит (NF4/GPTQ/AWQ) квантизация может быть оптимальной для потребительских GPU. Но нужно учитывать, что сложные мат задачи деградируют первыми: математика, логика и кодинг. Рантаймы, где гонять * pytorch \+ safetensors: гибко, стандартизовано, GPU/TPU/CPU * GGUF (llama.cpp): CPU/GPU/portable лучший выбор для квантизации и для устройств “на крае” * ONNX, TensorRT-LLM, MLC: для спец оборудования * Избегайте bin по причинам безопасности Компромиссы повсюду. Балансируйте компромиссы под свою задачу и бюджет. Как раздавать * vLLM для параллельных запросов * llama.cpp server с OpenAI совместимым API * EXLlama v2/v2 Tabby API с OpenAI совместимым API * Просто как локальный скрипт через CLI Локальная модель не значит Offline, а значит что работает на твоем железе. Твое железо может быть под столом, а может быть и в облаке. Коротко о Fine Tuning * Большинство задач можно решить через правильный промт \+ RAG * Для файнтюнина необходимо раздобыть данные * Делаем adapter layers на LoRA/ QLoRA на своем домашнем железе если сильно хочется Наиболее частые проблемы * OOM кончилась память. Квантизуем модель или сокращаем контекст * Плохая выдача. Проверь chat template, temperature * Медленно работает? Неправильные драйверы, нет FlashAttention, проверь свое железо CUDA/ROCm/Metal, влазит ли оно в память * Небезопасно? Не используй bin модели от рандомов из интернета Зачем все это? Запуская модель на своем железе вы получаете все управление в свои руки: механизм выбора токена sampling, chat templates, декодирование, системные промпты, квантизацию, контекст. Больше не платите за каждый токен. Только за железо и электричество. Приватность. Отсутствие Network latency.
Русский
24
31
446
29K
Andrew retweetet
Massimo
Massimo@Rainmaker1973·
The natural color of the blue sky
English
27
318
4.8K
288.3K
Andrew retweetet
Михаил Сабольц ☭
Have you ever compiled a single source file named `game3d.cs` that was 32510 lines long. Me neither, until today! ``` $ wc game3d.cs -l 32510 game3d.cs ``` The game is matty77.itch.io/conflict-3049, and uses Raylib.
Михаил Сабольц ☭ tweet media
English
3
5
109
23.8K