Челендж на 2026

Александр Воробьев
На сайте с 03.02.2020
Offline
61
Sly32 #:

Вот я знаю как создать и натренировать модель простую в Pytorch.  Что не так, раз тебя не устраивает этот фреймворк? Вот прям на пальцах - где есть место, которое ты можешь улучшить? 
Я имею очень поверхостное представление об обсуждаемой вами тематики. правильно ли я понимаю, если проводить аналогии с веб разработкой: это [создание своего фреймворка в этой области] как при задаче создать новостной сайт начать с создания своего вебсервера?
S3
На сайте с 29.03.2012
Offline
385
#312
Александр Воробьев #:
Я имею очень поверхостное представление об обсуждаемой вами тематики. правильно ли я понимаю, если проводить аналогии с веб разработкой: это [создание своего фреймворка в этой области] как при задаче создать новостной сайт начать с создания своего вебсервера?
Абсолютно 🤣
S3
На сайте с 29.03.2012
Offline
385
#313
ArbNet #:
Во-первых он написан на C++ да это скорость, но она сопряжена с риском сбоев, утечек памяти и тд. и тп. хотя у него есть возможность использовать графический процессор, если его использовать по скорости он примерно будет почти как Rust, но требователен к памяти. Во-вторых, пайтон это накладные расходы для скорости, преобразование типов переменных и прочее, замедление не хилое, для полезной работы остаются 10-20% времени. В-третьих, даже если его использовать через обёртку tch-rs в самом Rust, то первый пункт останется(риски утечек памяти, хотя в современных версиях это поубавилось, а мы помним как раньше чаты висли, но всё равно C++ остаётся не безопасным). Ну и тяжелый он, 2-3 гига вроде если с CUDA.
Совет - прежде чем лезть спорить в темы, где ты - ноль, хотя бы погугли или спроси нейросеть, чтобы вот так с размаху не сесть в лужу. По пунктам:
ArbNet #:
скорость, но она сопряжена с риском сбоев, утечек памяти и тд.

риск  ≠ утечка. Все проблемы плюсов известы, и в конкретно Pytorch нет никаких утечек, а наоборот, максимальная оптимизация по памяти

ArbNet #:
Во-вторых, пайтон это накладные расходы для скорости, преобразование типов переменных и прочее, замедление не хилое, для полезной работы остаются 10-20% времени.

Полная чушь. Там пайтон - только удобная оболочка, все считается в С++, на пайтон может 5%  процентов 

ArbNet #:
В-третьих, даже если его использовать через обёртку tch-rs в самом Rust, то первый пункт останется(риски утечек памяти

Почитай, что решает  tch-rs и для чего он.

ArbNet #:
Ну и тяжелый он, 2-3 гига вроде если с CUDA.

Вот именно - с CUDA. И Rust  здесь никак не помогает - все равно нужно использовать  CUDA.
По итогу - никакого прироста не даст переход на Rust.  Из полезных кейсов, что мне известны - это токенизация на Rust. Hugging Face ее давно используют у себя. 
Все остальное - пустые слова. Pytorch - известный продукт, над которым работают большие команды. В этом его сила. Тот же JAX -  хорош, но нет такого же коммьюнити.

Главное что я понял - ты вообще не понимаешь математики построения моделей. И поэтому не понимаешь что Раст никакого волшебства не даст. Более того, все это опробовано давно. 
Ты опять паяешь транзисторы там, где надо просто сложить 2+2.

ArbNet #:
У меня задача иная, придумать лучшие подходы и сделать лучше чем у других.

Нет у тебя такой задачи, для этого знания нужны. И впервые слышу чтоб кладовщика просили улучшить ЛЛМ))

S3
На сайте с 29.03.2012
Offline
385
#314

ArbNet , появилась идея. Фрейворк свой ты все равно не допилишь, давай изменим задачу.
AI logs analyzer -  умный анализатор логов.

Суть  идеи - создается простая модель класса nanoGPT. То есть по сути - трансформер. Обучается на реальных логах. 

умеет:

  • продолжать лог
  • предсказывать следующую строку
  • выявлять аномальные последовательности
  • объяснять ошибки.

На форуме часто возникают вопросы по анализу логов. Вот шанс показать свои знания и сделать полезный проект. Готовые ЛЛМ не используем, модель должна быть создана и обучена с нуля на реальных данных.  Как ты это делаешь, что используешь - без разницы, Раст, плюсы или пайтон.
Это не такой долгоиграющий проект , примерно на месяц, если с запасом. В итоге отдаем свои модели в общий доступ, народ тестирует, сравнивает.

Как тебе идея - готов? А то от тебя слов много. давай к делу? Я готов поучаствовать, все желающие тоже приглашаются.
MP
На сайте с 05.05.2025
Offline
20
#315
Sly32 #:
Так вообще то давно модульный подход известен.

Я же не пишу, что не известен. Даже аббревиатуру добавил HMVC. Я пишу про фреймворк, который автор разрабатывает. Что бы в нем интегрировать данный подход. Я бы использовал в новом проекте. 

Александр Воробьев
На сайте с 03.02.2020
Offline
61
MrPi #:
Я же не пишу, что не известен. Даже аббревиатуру добавил HMVC. Я пишу про фреймворк, который автор разрабатывает. Что бы в нем интегрировать данный подход. Я бы использовал в новом проекте. 
 Мне кажется это везде такой подход используется. Возможно с вариациями, но в целом.   Мне кажется это только если кто то на конкретном проекте или прототипе иначе подходит к вопросу.
S3
На сайте с 29.03.2012
Offline
385
#317
Александр Воробьев #:
 Мне кажется это везде такой подход используется. Возможно с вариациями, но в целом.   Мне кажется это только если кто то на конкретном проекте или прототипе иначе подходит к вопросу.

Согласен, де факто стандарт. Но не для ллм) чтобы агент следовал этому, приходится обучать, иначе пихает все в кучу

Александр Воробьев
На сайте с 03.02.2020
Offline
61
Sly32 #:
Согласен, де факто стандарт. Но не для ллм) чтобы агент следовал этому, приходится обучать, иначе пихает все в кучу
ну тут и вопрос мне и изначально тема не про LLM.  Соответственно и речь про веб фреймворк. :)  
S3
На сайте с 29.03.2012
Offline
385
#319
Александр Воробьев #:
ну тут и вопрос мне и изначально тема не про LLM.  Соответственно и речь про веб фреймворк. :)  
Про LLM это было только к слову. А так то да. Сейчас городить дичь, когда на фронте создаются таблицы БД( все мы знаем про что я)) никто в здравом уме не будет. Почитал, поизучал - именно Fastapi ближе всего к чистой модулбной архитектуре - все зависит от разработчика
Александр Воробьев
На сайте с 03.02.2020
Offline
61

Не забрасывая основного направления челенджа. Я решил написать свой ML движок. Получилось как нефиг делать. Не имеет ни каких проблем с памятью и быстродействием (потенциально будет работать с огромной скоростью даже на 386 архитектуре).  Доделать осталось самую малость. Ну и естественно на Rust 

use std::fmt;

// Создаем свою систему типов, потому что "в чужих фреймворках бардак"
#[derive(Debug, Clone)]
struct Tensor {
    data: Vec<f64>,
    shape: (usize, usize),
    requires_grad: bool, // Для вида, что мы поддерживаем backpropagation
}

impl Tensor {
    fn new(data: Vec<f64>, shape: (usize, usize)) -> Self {
        if data.len() != shape.0 * shape.1 {
            panic!("Shape mismatch! My framework is strict about dimensions.");
        }
        Tensor {
            data,
            shape,
            requires_grad: false,
        }
    }

    // "Уникальный" алгоритм умножения
    fn matmul(&self, other: &Tensor) -> Tensor {
        if self.shape.1 != other.shape.0 {
            panic!("Cannot multiply these tensors. My logic is superior but strict.");
        }

        let mut result_data = vec![0.0; self.shape.0 * other.shape.1];
        
        // Реализуем матричное умножение вручную, чтобы "понимать каждый байт"
        for i in 0..self.shape.0 {
            for j in 0..other.shape.1 {
                let mut sum = 0.0;
                for k in 0..self.shape.1 {
                    sum += self.data[i * self.shape.1 + k] * other.data[k * other.shape.1 + j];
                }
                result_data[i * other.shape.1 + j] = sum;
            }
        }

        Tensor::new(result_data, (self.shape.0, other.shape.1))
    }
}

impl fmt::Display for Tensor {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "Tensor[{:?}] with {} elements", self.shape, self.data.len())
    }
}

// 2. Наш "Уникальный Оптимизатор", лучше чем Adam
struct GradientDescentOptimizer {
    learning_rate: f64,
}

impl GradientDescentOptimizer {
    fn new(lr: f64) -> Self {
        println!("Initializing custom optimizer with lr={}. No momentum, no bias correction. Pure math.", lr);
        GradientDescentOptimizer { learning_rate: lr }
    }

    fn step(&self, tensor: &mut Tensor) {
        // тут работы на 5 минут осталось
        println!("Optimizing weights... (Simulated step)");
    }
}

// 3. "Ядро"
struct NeuroCore;

impl NeuroCore {
    fn forward_pass(input: &Tensor, weights: &Tensor) -> Tensor {
        println!(">>> Starting proprietary forward pass...");
        input.matmul(weights)
    }
}

fn main() {
    println!("=== Welcome to My Custom ML Engine (v0.0.1-alpha) ===");
    println!("Built from scratch because PyTorch is bloated.\n");

    // Инициализация "модели"
    // Входные данные: [1.0, 2.0]
    let input = Tensor::new(vec![1.0, 2.0], (1, 2));
    
    // Веса: [[0.5], [0.5]] -> Ожидаемый результат: 1.0*0.5 + 2.0*0.5 = 1.5
    let weights = Tensor::new(vec![0.5, 0.5], (2, 1));

    println!("Input: {:?}", input);
    println!("Weights: {:?}", weights);

    // Запуск "обучения"
    let optimizer = GradientDescentOptimizer::new(0.01);
    
    // Forward pass
    let output = NeuroCore::forward_pass(&input, &weights);
    
    println!("\nPrediction Result:");
    println!("{}", output);
    println!("Raw Data: {:?}", output.data);

    // Backward pass (заглушка)
    optimizer.step(&mut weights.clone());

    println!("\n=== Training Complete. Model is ready for production (maybe). ===");
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий