Аналитика Telegram-канала
Подписчики
140
Охват за 24 ч
32
ER за 24 ч
22,86%
Публикаций
7
Динамика подписчиков
7 дней
30 дней
6 месяцев
Больше
22 окт25 окт28 окт
Показаны последние 7 дней
Больше истории →
Охваты публикаций
07.1014.1015.1020.1021.1028.10
8
Средний охват
22
Лучший результат
Показаны 6 публикаций — последние в канале
Больше статистики →
Упоминания
6
Упоминаний
3
Из них репостов
2
Каналов
3
Упоминаний
3
Из них репостов
3
Каналов
Последние посты
3 из 7 2 из 7В основную ветку добавлена новая функциональность и API
- Удалён класс Variable теперь Tensor сам является autograd-узлом.
- Удалён метод .data() - используйте Tensor напрямую и detach() для значений без графа.
- requires_grad задаётся явно через requires_grad_().
- Активации/лоссы переехали в adept::nn::functional.
- Добавлены графовый режим и tracing.
1. Variable → Tensor
Было:
Variable forward(Variable x) { return relu(l1(x)); }
Variable x(batch[0].to(dev), false);
auto loss = cross_entropy_with_logits(net(x), Variable(y.to(dev), false));
auto v = loss.data().cpu().at<float32_t>({0,0});
Стало:
using namespace adept::nn::functional;
Tensor forward(Tensor x) { return relu(l1(x)); }
Tensor x = batch[0].to(dev);
auto loss = cross_entropy_with_logits(net(x), y.to(dev));
auto v = loss.detach().cpu().at<float32_t>({0,0});
2. requires_grad и .data()
// было
Variable v(x); v.requires_grad(false);
Tensor raw = v.data();
// стало
Tensor t = x;
t.requires_grad_(); // включить
t.requires_grad_(false); // выключить
Tensor raw = t.detach(); // без узла графа
Обычный Tensor по умолчанию без градиента. Свои параметры помечайте requires_grad_(). Cлои и оптимизаторы делают это сами. Для изменения данных на месте: weight_.copy_from(new_weight).
3. Заголовочные файлы и namespace
// было
#include <adept/autograd/autograd.hpp>
#include <adept/nn/activations.hpp>
#include <adept/nn/cross_entropy.hpp>
using namespace adept;
// стало
#include <adept/graph/autograd.hpp>
#include <adept/nn/functional.hpp>
using namespace adept::nn::functional;
relu, cross_entropy_with_logits, MSE, bce_loss и т.п. больше не лежат в adept::; используйте adept::nn::functional::....
4. Свои операции
Backward-правила теперь capture-free и читают состояние из OpContext:
detail::OpContext ctx("my_op");
ctx.add_input("input", input);
ctx.set_forward([](const std::vector<Tensor>& in, detail::OpContext&) {
return std::vector<Tensor>{my_op_fwd(in[0].detach())};
});
ctx.set_backward([](const Tensor& g, const detail::OpContext& c) {
if (c.input("input").requires_grad())
detail::add_grad(c.input("input"), my_op_bwd(g));
});
return detail::make_op(result, std::move(ctx));
Для нескольких выходов используется detail::make_multi_op.
5.Tracing (трассировка графа)
По умолчанию в Adept используется Eager режим: записывается только gradient tape (операции с `requires_grad`). В новом режиме `Compiled` записываются все операции.
#include <adept/graph/traced_graph.hpp>
auto traced = trace_module(model, [&](const std::vector<Tensor>& in) {
return std::vector<Tensor>{model(in[0])};
}, {example_input}, TraceOptions{.input_names = {"x"}});
Tensor out = traced.forward({runtime_input})[0];
Режим графа: GraphModeGuard(graph_mode_t::Compiled).
Также TraceOptions включают оптимизации: constant folding, CSE, алгебраические упрощения, DCE и анализ fusion-кандидатов.
Ограничения Tracing
- трассировка только для inference: TracedGraph умеет только forward, backprop через него не идёт;
- фиксируется сигнатура входов: количество, shape, dtype и device должны совпадать;
- трассируемая функция выполняется один раз на example inputs, поэтому чтение значений на хосте запрещено;
Ветвления должны зависеть от структуры графа, а не от значений тензоров;
- record_gradients=false по умолчанию — трассированный граф не хранит градиенты.
6. Python
Python API также обновлен в соответствии с изменениями.
#BreakingChanges #API #Tracing #Graph
ещё
22
0
28 окт, 11:34
Несколько дней потратил на то чтобы навайбкодить понижение из StableHLO диалекта в SPIR-V с использованием LLVM MLIR. В целом это получилось и я смог запускать скомпилированные шейдеры в среде Adept. Но производительность таких шейдеров существенно ниже написанных вручную. Например для поэлементных операций проблема в том как правильно сформировать размеры сетки и блоков. А для GEMM нужно реализовать тайлинг. И существующего компиляторного прохода для таких вещей как я понял нет, есть только вариант применения специального вида трансформации для которого надо самому писать скрипты. А проходы которые преобразуют циклы в параллельные циклы сейчас не поддерживают тайлинг и блоки. В общем задача оказалась существенно сложнее.
- Пока буду переносить в мастер ветку код для полноценного представления вычислительного графа и слияние Tensor и Variable в одну сущность.
- Потом есть идея отказаться от преобразования гарфа в StableHLO и сразу генерировать linalg диалект для MLIR.
- И ограничится пока только поэлементными операциями над тензорами что бы проверить можно ли получить аффективный fusing операций в одном шейдере с помощью компилятора.
#IR #SPIR-V #MLIR #LLVM #Tensor
ещё
1
0
21 окт, 11:27
Анонс: Осенний Scientific Open Source Meetup этого года - в октябре!
С радостью приглашаем всех на наш очередной Scientific Open Source Meetup, который пройдет 29 октября 2026 года с 17:30 до 21:30 в Санкт-Петербурге в уютном лофте на Газовой, 10ж. Это отличная возможность встретиться, обсудить актуальные темы и поделиться опытом в мире открытого программного обеспечения!
В программе:
Десять агентов, один файл: где исследовательские среды хранят состояние // Сергей Геворкян, менеджер продукта Cloud Ru
Что происходит с хранилищем, когда десятки агентов одновременно записывают ход исследований? Разбор кода OpenResearch, OpenScience и OpenHuman с замерами при росте числа агентов.
Петля должна быть разорвана // Олег Чирухин, GitVerse
Как заставить агента работать днями и неделями с первого промпта, почти без участия человека? Автор представит свой опенсорсный инструмент и приёмы для автономной разработки.
Китайский опенсорсный ИИ-агент openJiuwen // OpenScaler
openEuler → OpenScaler или туда и обратно // Дмитрий Варенов, Технический лидер сообщества openEuler/OpenScaler
От локализованного форка OpenScaler к прямому развитию openEuler в России и СНГ. Расскажем о планах и мероприятиях, а также о том, как внести вклад в проект и попасть на стажировку.
PAUK: инструмент для картографирования экосистем открытого кода // Андрей Гетманов, аспирант ИТМО
Как связать исследователей, статьи и репозитории в единый граф? PAUK помогает находить научные группы по темам исследований и выяснять, чьи разработки переиспользуют коллеги.
Опенсорс, агенты и студенты — опыт ФТИИ ИТМО // Юлия Борисова, к.т.н., руководитель учебно-научной лаборатории АИСТ, ИТМО
Есть ли работа для начинающего программиста-исследователя в эпоху агентов? Поговорим о том, как студентам войти в профессию и какие навыки нужны для разработки и исследований в области ИИ.
UniversalToolchain // Михаил Резаков, ФКН ВШЭ
Презентация проекта - победителя конкурса студенческих опенсорс-проектов ФКН ВШЭ.
Мероприятие проходит при поддержке Gitverse, Cloud.Ru и OpenScaler.
Дата: 29 октября 2026 года
Время: 17:30 до 21:30
Место: Лофт на Газовой, 10ж, СПб.
Участие бесплатное, но количество очных мест ограничено! Трансляция - будет.
Ссылка на регистрацию - https://openmeetup.ru/
Ждем вас на митапе!
ещё
1
0
20 окт, 15:54
Продолжить анализ этого канала
- История роста подписчиков
- Просмотры и охваты публикаций
- Кто упоминает канал и кого упоминает он
- Похожие каналы и подбор для рекламы
Открыть аналитику
Демо до 14 дней