METANIT.COM – Telegram
METANIT.COM
5.97K subscribers
1.69K photos
81 videos
9 files
1.08K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
Как работают большие модели LLM. Общий процесс:

Шаг 1) Изучение больших объемов текстовых данных
LLM тренируются на огромных наборах данных (книги, веб-сайты и код), чтобы распознавать закономерности и связи между словами. Этот текст очищается и разбивается на токены — небольшие фрагменты, которые может обработать машина.

Шаг 2) Обучение модели
Используя технику глубокого обучения - трансформеры (transformer), LLM анализируют контекстные связи между словами. Они совершенствуются со временем, корректируя свои внутренние настройки (веса) с помощью градиентного спуска — процесса проб и ошибок, который минимизирует ошибки.

Шаг 3) Тонкая настройка для специальных задач
После обучения LLM настраиваются под конкретные приложения, такие как кодинг или поддержка клиентов. Это делается с помощью контролируемого обучения (supervised learning), обучения с подкреплением (Reinforcement Learning) на основе обратной связи с человеком (RLHF) или адаптации с низким рангом (LoRA) для повышения точности.

Шаг 4) Формирование ответов
При вводе запроса LLM обрабатывает ввод, предсказывает наиболее вероятные следующие токены и генерирует ответ. Для повышения точности и релевантности некоторые модели перед генерацией ответа используют RAG-генерацию (Retrieval-Augmented Generation) с поиском внешних источников информации (например, базы данных или документы), чтобы предоставить более фактические ответы. Затем для уточнения окончательного вывода LLM применяет стратегии декодирования, такие как лучевой поиск (beam search) и выборка ядра (nucleus sampling).

Шаг 5) Фильтрация и оптимизация
Перед развертыванием LLM проходят через фильтры безопасности для удаления предвзятостого и вредоносного контента. Они также оптимизируются с использованием таких методов, как квантизация и обрезка, что делает их эффективными для облачного и локальных ИИ.

Какие существуют проблемы?
LLM сталкиваются с такими проблемами, как галлюцинации (ложные результаты), предвзятость и высокие вычислительные затраты. Инженеры оптимизируют их с помощью RAG, спекулятивного декодирования, гибридного развертывания в облаке и других решений.
👍14🥰1👏1
Большая шпаргалка по всем основным типам деревьев
9🔥1👏1
Алгоритмическая сложность алгоритмов машинного обучения
👍6🔥2👏1
Вышла новая версия проекта LLVM и компилятора Clang - LLVM 20/ Clang 20
LLVM/Clang 20 — это новейший полугодовой релиз популярного стека компиляторов с открытым исходным кодом, который широко используется многими различными поставщиками для различных целей: от традиционной компиляции C/C++ до интенсивного использования для вычислительных стеков GPU, растущего использования ИИ с MLIR и многого другого.
В новой версии LLVM/Clang 20 добавлена поддержка ряда расширений, в частности, AMX-AVX512, AMX-FP8, AVX10.2, AMD GFX950 и т.д. Добавлен фреймворк для сбора телеметрии, новый современный компилятор Fortran теперь доступен через команду flang и т.д. В Clang добавлен ряд возможностей последних стандартов C и C++.
Подробнее все изменения по Clang: https://releases.llvm.org/20.1.0/tools/clang/docs/ReleaseNotes.html
https://github.com/llvm/llvm-project/releases/tag/llvmorg-20.1.0
👍8🔥2👏1🤮1
12 распространеных структур данных

1. Массив
- Набор элементов фиксированного размера, хранящийся в непрерывной памяти.
- Обеспечивает доступ O(1) на основе индекса

2. Матрица (двухмерный массив)
- Многомерный массив, используемый для представления сеток, графиков и задач динамического программирования.

3. Связный список
- Динамическая структура данных, в которой элементы (узлы) связаны посредством указателей.
- Типы: односвязный список, двусвязный список, кольцевой связный список.

4. Стек
- Структура данных «последним пришел — первым ушел» (Last-In-First-Out / LIFO), в которой элемент, добавленный последним, удаляется первым.
- Поддерживает операции push, pop и peek за время O(1).

5. Очередь
- Структура данных «первым пришел — первым вышел» ( First-In-First-Out / FIFO).
- Позволяет вставлять в конец очереди (помещать в очередь) и удалять из начала очереди (вынимать из очереди) за время O(1).
- Используется для обработки элементов в том же порядке, в котором они добавляются.

6. Хешкарта(словарь)
- Структура данных «ключ-значение», использующая хеш-функцию для быстрого поиска.
- Обеспечивает среднее время вставки/удаления/поиска O(1), O(N) (в худшем случае из-за коллизий)

7. Дерево
- Иерархическая структура данных с корневым узлом и дочерними узлами.
- Типы: двоичное дерево, N-арное дерево, AVL-дерево, красно-черное дерево (Red-Black Tree)

8. Бинарное дерево поиска (𝐁𝐢𝐧𝐚𝐫𝐲 𝐒𝐞𝐚𝐫𝐜𝐡 𝐓𝐫𝐞𝐞 / 𝐁𝐒𝐓)
- Особый тип деревьев, где имеется отношение левый узел < кореневой узел < правый узел
- Позволяет выполнять поиск, вставку и удаление со скоростью O log N) в сбалансированных BST.

9. Очередь приоритетов / куча
- Структура на основе двоичного дерева, в которой родительский элемент всегда больше (максимальная куча) или меньше (минимальная куча), чем его дочерние элементы.
- Обеспечивает O(log N) вставки/удаления и O(1) получения минимума/максимума.

10. 𝐓𝐫𝐢𝐞
- Древовидная структура, используемая для быстрого поиска строк.
- Обеспечивает время O(M) для вставки/поискп/удаления, где M — длина строки.

11. Граф
- Совокупность узлов (вершин), соединенных ребрами.
- Для представленя применяются список смежности (Adjacency List) или матрица смежности (Adjacency Matrix)
- Типы: направленные, ненаправленные, взвешенные, невзвешенные.

12. 𝐔𝐧𝐢𝐨𝐧-𝐅𝐢𝐧𝐝 (𝐃𝐢𝐬𝐣𝐨𝐢𝐧𝐭 𝐒𝐞𝐭)
- A data structure used for efficiently handling dynamic connectivity.
- Supports Union(x, y) and Find(x) in nearly O(1) time (with path compression).
- Useful in detecting cycles and finding connected components in a graph.

12. 𝐔𝐧𝐢𝐨𝐧-𝐅𝐢𝐧𝐝 (𝐃𝐢𝐬𝐣𝐨𝐢𝐧𝐭 𝐒𝐞𝐭)
- Структура данных, используемая для эффективной обработки динамических подключений.
- Поддерживает операции Union(x, y) и Find(x) за время, почти равное O (1) время (со сжатием пути).
- Полезен для обнаружения циклов и поиска связанных компонентов в графе.
14👍7👏1😐1
(Картинка к предыдущему посту)
11👍1🔥1👏1
Microsoft добавил в .NET новый тип проекта - .NET AI Chat Template (пока в Preview-версии), который разработан, чтобы быстро создать приложение чата на базе ИИ. Этот начальный выпуск базируется на веб-приложении на базе Blazor, созданном с использованием абстракций Microsoft.Extensions.AI и Microsoft.Extensions.VectorData. Шаблон использует шаблон Retrieval Augmented Generation (RAG), который обычно используется для приложений чата.
Шаблон нового проекта доступен как через .NET CLI, так и в Visual Studio
https://devblogs.microsoft.com/dotnet/announcing-dotnet-ai-template-preview1/
🤯8👍4👏2🔥1🤬1😢1🤡1
Шпаргалка по облачной архитектуре
10🔥3👏3
Общая шпаргалка по системному дизайну
3🔥2🥰2
Визуальное доказательство теоремы Байеса
❤‍🔥11👍1
Google добавил приложение Linux Terminal в состав мартовского обновления Android 15 ("Pixel Feature Drop") для устройств Google Pixel. Приложение позволяет запустить в окружении Android виртуальную машину с Debian GNU/Linux, в которой можно выполнять обычные Linux-приложения.
Активация Linux Terminal производится в настройках для разработчиков (секция "Settings > System > Developer > Linux development environment"). Для появления данной опции необходимо активировать режим разработчика, быстро нажав семь раз на номере сборки на странице "Settings → About Phone". После первого запуска приложение предлагает загрузить на устройство образ виртуальной машины c Linux, который занимает около 500 МБ.
https://www.androidpolice.com/android-15-linux-terminal-app/
24🔥6🍾2🤡1
Разработчики проекта Wine представили выпуск фреймворка Mono 6.14.0 - альтернативную версию среды выполнения .NET. Выпуск Mono Framework 6.14.0 вобрал в себя изменения, накопившиеся за 5 лет, и является первым выпуском после того, как компания Microsoft передала разработку Mono сообществу Wine.
Mono поддерживает Linux (x86, amd64, arm64), macOS (amd64, arm64) и Windows (x86, amd64). Бинарные сборки пока не предоставляются.
В Mono 6.14.0 добавлена поддержка macOS с архитектурой ARM64. улучшено взаимодействие технологии System.Windows.Forms и протокола X11, улучшена поддержка генерируемых COM-интерфейсов и т.д.
https://www.winehq.org/news/2025030801
#dotnet #csharp
👍4
JWT — один из наиболее широко используемых методов аутентификации API, обеспечивающий безопасный, масштабируемый способ проверки клиентов без сохранения состояния.
Как работает JWT:

1) Аутентификация клиента
Клиент (пользователь, приложение или устройство) предоставляет учетные данные (например, имя пользователя/пароль) серверу аутентификации.

2) Проверка сервера
Сервер аутентификации проверяет учетные данные по своей базе данных или поставщику удостоверений, чтобы подтвердить их действительность.

3) Выпуск JWT
Если аутентификация прошла успешно, сервер:
☑️ Генерирует JWT с подтверждениями (например, идентификатор пользователя, роли, разрешения).
☑️ Подписывает JWT с помощью секретного ключа (HS256) или закрытого ключа (RS256).

4) Доставка токенов
Сервер отправляет подписанный JWT обратно клиенту в ответе.

5) Безопасное хранение
Клиент хранит JWT в безопасности, чтобы предотвратить несанкционированный доступ. HTTP-cookie-файлы являются наиболее безопасным и широко используемым методом.

6) API-запросы с JWT
Для каждого запроса к защищенному API клиент включает JWT в заголовок авторизации: Authorization: Bearer<JWT>

7) Сервер проверяет JWT
Перед предоставлением доступа сервер API проверяет JWT, проверяя следующие аспекты:
☑️ Подпись – подтверждает целостность токена (не подделан).
☑️ Истечение срока действия — гарантирует, что срок действия токена не истек.
☑️ Аудитория (заявление aud) — проверяет, предназначен ли токен для этого API.
☑️ Эмитент (заявление iss) — подтверждает, что токен был выпущен доверенным органом.

Если JWT действителен, сервер предоставляет доступ к запрошенному ресурсу. В противном случае он отклоняет запрос (401 Unauthorized).

8) Истечение срока действия токена и обновление
Поскольку срок действия JWT истекает по соображениям безопасности, клиенту необходим токен обновления (refresh token), чтобы получить новый:
↳ Клиент отправляет токен обновления на сервер.
↳ Сервер проверяет и выдает новый JWT, если токен обновления действителен.
↳ Новый JWT заменяет просроченный, и клиент продолжает делать запросы.

Подобный рабочий процесс обеспечивает безопасную, эффективную и не зависящую от состояния аутентификацию для API, контролируя производительность и масштабируемость.
👍16💅3🔥2👏2
(Наглядная иллюстрация к предыдущему посту)
👍4💅3🔥2👏2
От владельцев сайтов требуют получать у Роскомнадзора разрешение на использование Google Analytics
Роскомнадзор стал уведомлять владельцев интернет-сайтов о том, что использование ими счетчика посещений Google Analytics приравнивается в трансграничной передаче данных. О запрете использования данного счетчика речь не идет, но его необходимо деактивировать и получать разрешение на использование.
https://www.cnews.ru/news/top/2025-03-10_ot_vladeltsev_sajtov_trebuyut
🤡12😐12🤯3😁2
Шпаргалка по Git
16🔥2👏2