Найти в Дзене
ML атомики
Атомарные операции — это неделимые инструкции (например, atomicAdd, atomicCAS, compare-and-swap), которые обеспечивают безопасный доступ к общей памяти в многопоточных или параллельных средах без использования блокировок (locks). В ML они особенно полезны для ускорения обучения на CPU/GPU и в распределённых системах, где возникают race conditions. Атомарные операции не универсальны: они медленнее обычных инструкций из-за сериализации, поэтому применяются только там, где нужны (sparse updates или high contention)...
2 дня назад
Cow (Clone-on-Write) для ML
Cow (Clone-on-Write) - тип, который позволяет переиспользовать данные без копирования, пока это возможно. ML-проекты работают с большими объёмами данных, где лишние аллокации и копии сильно бьют по производительности (особенно на inference). Cow даёт «бесплатную» оптимизацию: пишешь код так, будто у тебя всегда owned-данные, а Rust копирует только когда действительно нужно изменить. Это делает код проще и быстрее, чем ручное ветвление на &str vs String или &[T] vs Vec. Принимаем входной текст как...
1 неделю назад
Автоматический поиск зеркал с ML
Создать сервис для автоматического подбора зеркала crates.io обладающий следующими свойствами: Существует две реализации: TomlConfigWriter модифицирует ~/.cargo/config.toml Программа принимает параметры:...
3 недели назад
Как использовать &self, &mut self, self и mut self — в ML
Повысить производительность в машинном обучении: &self и &mut self позволяют работать с одними и теми же данными в памяти (например, в GPU через CUDA), просто передавая ссылки на них. Повысить безопасность: &mut self — гарантирует, что в любой момент времени только один поток может изменять данные, что полностью исключает ошибки многопоточности. Так же &mut self предотвращает одновременные мутации при многопоточном обучении. 1. &self: Неизменяемое заимствование "Посмотреть, но не трогать" (Неизменяемое заимствование) use ndarray::{array, Axis}; let array = array![[1...
2 месяца назад
Валидация json с Rust ML
🎯 https://github.com/nicktretyakov/json_validate Чтение данных → Извлечение признаков → Нормализация → Обучение моделей → Валидация → Обнаружение аномалий struct ComplexData { id: u64, name: String, features: Vec<f64>, // Основные числовые признаки labels: Option<Vec<String>>, // Метки (могут отсутствовать) nested: HashMap<String, NestedData>, // Вложенные данные timestamp: String, } struct NestedData { value: f64, // Числовое значение category:...
2 месяца назад
Использование мутабельного слайса вместо вектора в Rust для ML
Любое программное решение ограничено количеством памяти и CPU. Вектор позволяет хранить неограниченное количество информации, создавая тем самым угрозу работоспособности ПО. При этом рассчитать объем хранимой информации в векторе невозможно, по причине: Мутабельный слайс (&mut [T]) — это всего лишь "вид" на уже существующие данные. Он не выделяет память самостоятельно, а только заимствует её у другой структуры (вектора, массива и т.д.). Сам объект слайса занимает на стеке фиксированный объём —...
3 месяца назад
GraphQL pipeline на Rust
Создать фреймворк для построения асинхронных конвейеров обработки данных с поддержкой параллельных вычислений, состоящие из независимых узлов (nodes), которые обмениваются данными через асинхронные каналы. Каждый узел выполняет специфическую задачу и может работать параллельно с другими узлами. [Node A] --(channel)--> [Node B] --(channel)--> [Node C] Каждый узел: pub enum Data { FilePath(PathBuf), // Путь к файлу FileHash(PathBuf, String), // Путь и хеш файла } pub enum NodeError...
3 месяца назад
Анализ сетевого трафика на Rust ML
Научиться использованию рекуррентных нейронных сетей (RNN) и LSTM для обнаружения аномалий с использованием ML. Написать анализатор последовательностей сетевых пакетов для выявления низкочастотных атак в HTTP-трафике. RNN — это тип нейронной сети, который специализируется на работе с последовательностями данных, где порядок важен. Например, текст, речь, временные ряды (например, курсы валют или сетевой трафик). Пример: Представьте, что вы читаете книгу. Чтобы понять смысл предложения, вам нужно помнить, что было написано раньше...
3 месяца назад
Как использовать Rust и Lua для работы с ML
Встраивание Lua в Rust-приложения: можно использовать Rust-крейты, такие как mlua (ранее rlua), для создания экземпляра виртуальной машины Lua внутри вашей программы. Это позволяет: Использование Rust для реализации высокопроизводительных ядер: Вы можете разрабатывать и компилировать критические для производительности компоненты ML (например, операции с тензорами, функции активации, слои нейронных сетей) в виде библиотек Rust. Затем эти библиотеки можно сделать доступными для Lua через C-совместимый FFI (Foreign Function Interface)...
3 месяца назад
Инфографика на Rust
[package] name = "ml_infographic" version = "0.1.0" edition = "2021" [dependencies] anyhow = "1.0" crossbeam = "0.8" image = "0.25" linfa = "0.7" linfa-clustering = "0.7" linfa-logistic = "0.7" linfa-svm = "0.7" linfa-kernel = "0.7" ndarray = { version = "0.15", features = ["rayon"] } ndarray-rand = "0.14" polars = { version = "0.43", features = ["lazy", "ndarray"] } plotters = "0.3" rand = "0.8" fn main() -> Result<()> { let mut rng = thread_rng(); let features = 2; // 2D данные let samples_per_cluster...
4 месяца назад
Использование usize и isize в ML на Rust
При работе с машинным обучением на Rust типы usize и isize играют ключевую роль в обеспечении эффективности, безопасности памяти и переносимости кода. Эти типы особенно важны при обработке больших данных, индексации тензоров и управлении памятью. Вот как их можно эффективно использовать в контексте ML: В ML часто работают с многомерными массивами и тензорами. Тип usize является стандартным для индексации, так как его размер соответствует архитектуре платформы (32 или 64 бита), что гарантирует покрытие всего адресного пространства...
4 месяца назад
Атоматизация браузера с ML на Rust
[dependencies] anyhow = "1.0" async-openai = "0.16" async-trait = "0.1" backoff = "0.4" bb8 = "0.8" bb8-redis = "0.17" image = "0.24" ndarray = "0.15" rand = "0.8" redis = "0.23" reqwest = "0.11" serde_json = "1.0" thirtyfour = { version = "0.31", features = ["chrome"] } thiserror = "1.0" tokio = { version = "1.0", features = ["full"] } tract-onnx = "0.18" tracing = "0.1" tracing-subscriber = "0.3" use anyhow::{anyhow, Context, Result}; use async_openai::{ types::{ChatCompletionRequestMessageArgs,...
5 месяцев назад