Pull to refresh
0
0
Send message

Как учить языки программирования и создавать базу знаний с помощью метода из прошлого века: опыт четырех инженеров

Level of difficultyEasy
Reading time10 min
Views26K

Недавно в комментариях к тексту про построение личной базы знаний на Хабре читатель отметил, что в таких статьях не хватает примеров работы с техническими данными. Давайте это исправим. Мы спросили у инженеров YADRO и технарей из сообщества «Цеттелькастен и Персональные базы знаний», как и для чего они ведут свои заметки.  Герои статьи используют Obsidian и Emacs, а также личные Telegram-каналы, чтобы изучать новые языки программирования, проходить технические собеседования и вести рабочие записи.

Для тех, кто пока не знаком с методом социолога Никласа Лумана, в начале статьи рассказали об истории Цеттелькастена и показали, как выглядело хранилище данных полвека назад. Короб с ящиками и карточками стал прототипом современных систем для ведения заметок, которыми пользуются инженеры. 

Читать далее
Total votes 33: ↑30 and ↓3+36
Comments26

Управление личными делами в Obsidian (прототип)

Level of difficultyHard
Reading time28 min
Views15K

В статье будет показан прототип системы дел, который реализован в Obsidian. Система в основном будет базироваться на идеях GTD.

Задачи будут создаваться в дневнике/журнале и агрегироваться в отдельных заметках с использованием плагина Tasks.

Система будет адаптирована для телефонов.

Статья написана для продвинутых юзеров Obsidian. Новичкам, конечно, с ней будет тяжеловато разобраться.

Задачи и Obsidian? Звучит интересно!
Total votes 11: ↑9 and ↓2+9
Comments10

10 библиотек Python для машинного обучения — подборка для начинающих

Level of difficultyMedium
Reading time8 min
Views12K

Составили список самых важных библиотек Python для машинного обучения и рассказали, для каких задач они могут быть полезны начинающим ML-инженерам и специалистам по Data Science.

Собрать подборку помог Кирилл Симонов — ML-разработчик компании IRLIX с экспертизой в компьютерном зрении.

Читать далее
Total votes 10: ↑9 and ↓1+10
Comments0

Реализация распределённых вычислений на языке python с использованием технологии docker

Reading time5 min
Views8K

Распределённые вычисления представляют собой способ решения трудоемких вычислительных задач с использованием нескольких компьютеров, чаще всего объединённых в параллельную вычислительную систему.

Одно из первых упоминаний распределенных вычислений относится к 1973 году. Сотрудники научно-исследовательского центра Xerox PARC Джон Шох и Джон Хапп написали программу, которая рассылала себя по другим работающими компьютерам через локальную сеть PARC.

Впоследствии, в связи с развитием и ростом количества персональных компьютеров, распределённые вычисления стали использоваться всё более и более широко. Так, в конце 1980- х годов Арьен Ленстра и Марк Менес написали программу для факторизации длинных чисел. Она рассылала задания на компьютеры участников по электронной почте и таким же образом принимала ответы.

Ещё одним значимым событием было создание проекта SETI@Home (Search for Extra-Terrestrial Intelligence at Home) для поиска внеземного разума путём анализа данных с радиотелескопов, в том числе на домашних компьютерах участников. Данный проект был запущен в 1999 году и оста новлен в 2020-м. Эта распределенная система была построена на платформе BOINC, созданной в университете Беркли.

В дальнейшем разработки по созданию различных распределённых систем активно продолжались, и в настоящее время они применяются в самых различных областях. В частности, распределённые вычисления широко используются для математических задач. Типичным примером является факторизация чисел (разложение их на произведение простых множителей).

Ещё одной важной областью применения распределённых вычислений является обработка больших данных с использованием методов машинного обучения и Data Mining. В качестве языка программирования для этой цели в последние годы на лидирующие позиции выходит язык Python. По состоянию на март 2020 года, согласно рейтингу TIOBE, Python находится на третьем месте, хотя ещё в 2015 году занимал лишь седьмое.

Одной из известных проблем языка Python является относительно низкая производительность в сравнении с компилируемыми языками – такими как C++. Данный недостаток является дополнительным поводом применять параллельное и распределённое программирование в процессе разработки.

Читать далее
Total votes 6: ↑2 and ↓4+2
Comments5

Aqueduct: Как мы экономим железо для МЛ-вычислений

Level of difficultyMedium
Reading time10 min
Views2.2K

Привет! Меня зовут Олег Бугримов, я руковожу разработкой в команде Data Science SWAT в Авито. Мы занимаемся инженерией для машинного обучения. Одно из направлений - это оптимизация продового инференса. Наша задача чтобы модельки работали быстро и не потребляли безумное количество ресурсов. Так вот, мы дооптимизировались до того, что реализовали инструмент который позволяет сэкономить 30% железа. Вы видите реальный график нагрузки GPU-процессора

Читать далее
Total votes 7: ↑7 and ↓0+9
Comments9

Цикл разработки LLM

Reading time4 min
Views4.3K

В этой статье я использую мой опыт обучения больших языковых моделей (смотрите серию видео на канале Ruslan Dev), чтобы выявить и описать основные фазы разработки собственной LLM.

На сегодняшний день разработчики GenAI моделей, как правило, используют веса базовых (foundational) моделей, а не обучают нейросеть с нуля. В качестве данных для обучения часто используются ответы state-of-the-art LLM, таких как GPT-4. Этот подход получил распространение с тех пор, как создатели Stanford Alpaca показали, что инференс небольшой модели наподобие Llama 7B можно приблизить по качеству к GPT-3 путем файнтюнинга на ответах последней.

С тех пор и коммерческие, и опенсорс-модели шагнули вперед. Я работал с базовой моделью Llama-3, обученной на беспрецедентно огромном корпусе из 15 триллионов текстовых токенов, что дает широкие возможности для файнтюнинга. А датасет для обучения я собирал с помощью последней модели OpenAI - GPT-4o. Как видите, переменные изменились, но уравнение осталось то же - подход Альпаки работает по-прежнему.

Читать далее
Total votes 7: ↑6 and ↓1+8
Comments6

Алгоритм Backpropagation на Python

Reading time9 min
Views4.2K

Привет, Хабр!

Алгоритм backpropagation, или обратное распространение ошибки, является некой базой для тренировки многослойных перцептронов и других типов искусственных нейронных сетей. Этот алгоритм впервые был предложен Полем Вербосом в 1974 году, а позже популяризирован Дэвидом Румельхартом, Джеффри Хинтоном и Рональдом Уильямсом в 1986 году.

Читать далее
Total votes 9: ↑9 and ↓0+12
Comments0

Основы архитектуры для джунов: построение масштабируемых и чистых приложений на python (Туториал)

Level of difficultyMedium
Reading time18 min
Views14K

Когда речь идет о создании масштабируемых и поддерживаемых приложений, понимание таких важных понятий, как принципы чистого кода, архитектурные паттерны и SOLID практики проектирования, имеет решающее значение. Изучив эти принципы, новички получат представление о построении надежных, гибких и легко тестируемых приложений, что позволит им сохранить ясность кодовой базы и возможность ее сопровождения по мере роста их проектов.

Читать далее
Total votes 10: ↑7 and ↓3+4
Comments14

SARIMAX vs Экспоненциальное сглаживание: Когда простота побеждает

Reading time10 min
Views3.7K

Продолжаю рассказывать про первые шаги в моделировании временных рядов. В этой статье разбираю модели SARIMAX и Экспоненциальное сглаживание, с примерами картинок и кода.

Читать далее
Total votes 10: ↑10 and ↓0+16
Comments12

1-битные LLM могут решить проблему энергопотребления ИИ

Reading time4 min
Views9.8K

Большие языковые модели, системы искусственного интеллекта, на которых работают такие чат-боты, как ChatGPT, становятся все лучше и лучше, но они также становятся все больше и больше, требуя все больше энергии и вычислительной мощности.

Читать далее
Total votes 6: ↑6 and ↓0+8
Comments16

Macroni: рецепт поступательного улучшения языка программирования

Level of difficultyHard
Reading time12 min
Views4.1K


Хотя, Clang и используется в качестве инструмента для рефакторинга и статического анализа, у него есть серьёзный недостаток: в абстрактном синтаксическом дереве не предоставляется информации о происхождении конкретных расширений-макросов на CPP, за счёт которых может надстраиваться конкретный узел AST. Кроме того, Clang не понижает расширения-макросы на уровень LLVM, то есть, до кода в формате промежуточного представления (IR). Из-за этого оказывается запредельно сложно конструировать такие схемы статического анализа, при которых учитывались бы макросы. Сейчас эта тема активно исследуется. Но ситуация налаживается, поскольку прошлым летом был создан инструмент Macroni, упрощающий статический анализ именно такого рода.

В Macroni разработчики могут определять синтаксис новых языковых конструкций на C с применением макросов, а также предоставлять семантику для этих конструкций при помощи MLIR (многоуровневого промежуточного представления). В Macroni используется инструмент VAST, понижающий код C до MLIR. В свою очередь, инструмент PASTA позволяет выяснить, откуда те или иные макросы попали в AST, и на основании этой информации макросы также удаётся понизить до MLIR. После этого разработчики могут определять собственные MLIR-конвертеры для преобразования вывода Macroni в предметно-ориентированные диалекты MLIR, чтобы анализировать предмет с учётом многочисленных нюансов. В этой статье будет на нескольких примерах показано, как Macroni позволяет дополнять C более безопасными языковыми конструкциями и организовать анализ безопасности C.
Читать дальше →
Total votes 15: ↑15 and ↓0+26
Comments1

Устанавливаем модель генерации изображений Stable Diffusion 3 на ComfyUI

Level of difficultyEasy
Reading time2 min
Views14K

Модель Stable Diffusion 3 вышла вчера, 12 июня, ее файлы (SD3 Medium) и примеры конфигурации были опубликованы в тот же день на Hugging Face. Попробовать модель (пока) можно только в ComfyUI и мы написали небольшую инструкцию, как это сделать.

Читать далее
Total votes 9: ↑8 and ↓1+8
Comments10

Временные ряды и ARIMA: Как предсказывать будущее без хрустального шара

Level of difficultyEasy
Reading time4 min
Views6.6K

Что такое временной ряд, модель ARIMA и как к ней подбирать параметры.

Простым словами, временной ряд — это просто последовательность событий, которая как-то зависит от времени. Мы для начала будем считать, что ряд самый простецкий и нас просто есть скачущие туда-сюда точки, которые распределены по временной шкале.

Читать далее
Total votes 9: ↑8 and ↓1+9
Comments25

Динамическое программирование на Python

Reading time4 min
Views11K

Динамического программирование полезно при решении оптимизационных задач и задач на вычисление, где присутствует большое кол-во повторяющихся подзадач.

По сравнению с другими алгоритмическими подходами, динамическое программирование позволяет ускорить процесс вычисления за счет сохранения результатов выполнения подзадач.

Читать далее
Total votes 7: ↑6 and ↓1+9
Comments5

Простые способы ускорения обучения PyTorch-моделей

Level of difficultyMedium
Reading time13 min
Views5.9K

Не знаю — нужно ли вступление к статье, посвящённой ускорению машинного обучения (Machine Learning, ML)?

Ускорение обучения моделей — это именно то, в чём нуждаются все ML‑инженеры. Более быстрое обучение модели означает ускорение экспериментов, что, в свою очередь, ведёт к ускорению выпуска новых версий программных продуктов. Кроме того — чем выше скорость обучения — тем меньше ресурсов нужно на каждую итерацию обучения модели. Поэтому предлагаю перейти сразу к делу.

Читать далее
Total votes 15: ↑15 and ↓0+25
Comments2

Гайд по ICLR 2024: тренды и лучшие доклады

Level of difficultyMedium
Reading time15 min
Views2.9K

Привет! Меня зовут Света Маргасова, и я руковожу бригадой моделей с внешней информацией в Яндексе. В этом году в большой компании коллег впервые побывала на конференции ICLR (Learning Representations (ICLR) — обучение представлений), которая проходила в Вене. Масштаб и формат ICLR 2024 подтверждаюет её статус — A*. Конференция продолжалась 5  дней, на неё подали больше 7000  статей, 2260  из которых приняли. Участников тоже было очень много  — все старались успеть познакомиться с авторами на постер-сессиях, послушать доклады и попасть на воркшопы. 

В этой статье я расскажу о самом интересном по моему мнению и по отзывам коллег  — над постом также работали Илья Удалов и Максим Кузин, которые занимаются  ML в рекламе. Здесь же вы найдёте нашу коллективную подборку полезных статей. 

Читать далее
Total votes 18: ↑17 and ↓1+21
Comments3

Интуитивное понимание пространств и ядер в машинном обучении: Часть 1

Level of difficultyHard
Reading time9 min
Views8.3K

При изучении темы ядер (kernel) в ML/DS программы вузов, роадмэпы и видео на YouTube обычно рассматривают её через призму SVM, не говоря уже о всеми любимых курсах:). Казалось бы, это неплохо: вот тебе краткое объяснение и модель, которая использует ядра. Но, увы, в этих областях желательно понимать многие процессы интуитивно, так сказать — «тяжело в учении, легко в бою». К тому же, эта тема нечто большее, чем просто метод; она позволяет связать многие вещи в машинном обучении в единую картину через пространство, что я и хочу показать в этой статье.

Читать далее
Total votes 20: ↑18 and ↓2+20
Comments12

Enbeddrus — обучение независящей от языка эмбеддинг-модели

Level of difficultyMedium
Reading time11 min
Views2.6K

Приветствую, хабровчане!

Сегодня хочу рассказать вам историю о том, как я обучил простую и компактную независящую от языка модель-эмбеддер, которая умеет работать с техническими текстами о PHP и способна извлекать схожие эмбеддинги для параллельных текстов на английском и русском языках.

Основная причина, по которой я решил заняться этим проектом, заключается в том, что мои заметки, код и документация, накопленные за более чем десять лет практики, представляют собой солянку текстов о разных технологиях, языках программирования, пометки о настройке серверов Linux и т.д. на русском и английском языках. Поэтому мне захотелось сделать Retrieval-Augmented Generation (RAG) помогалку, которая сможет принимать запросы пользователя (меня) и эффективно находить информацию в столь разношерстой базе данных, независимо от того на каком языке я сделал запрос и на каком языке написана документация.

Для достижения этой цели необходима независимая от языка модель-эмбеддер, которая будет одинаково хорошо работать с техническими текстами на русском и английском языках.

Ещё одним важным аспектом было то, чтобы модель потребляла как можно меньше ресурсов и, если возможно, чтобы её можно было преобразовать в формат GGUF.

Читать далее
Total votes 12: ↑12 and ↓0+17
Comments0

Parameter-Efficient Fine-Tuning (PEFT): методы LoRA, Prefix tuning, Prompt tuning и Adapters

Level of difficultyMedium
Reading time6 min
Views7.3K

На сегодняшний день созданы разные большие языковые модели (LLM), которые показывают превосходные результаты, но для раскрытия их полного потенциала необходимо дообучение для точного решения конкретных задач. Традиционный метод файнтюнинга, при котором настраиваются все параметры предварительно обученной модели, становится непрактичным и вычислительно дорогостоящим при работе с современными моделями LLM.

PEFT(Parameter-Efficient Fine-Tuning) представляет собой эффективный подход, позволяющий не терять производительность при тонкой настройке модели, снижая при этом требования к памяти и вычислительным мощностям.

В этой статье мы рассмотрим общую концепцию PEFT, его преимущества и основные методы.

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments1

Как устроен Representation Finetuning, родившийся из идеи интерпретируемости LLM

Level of difficultyMedium
Reading time3 min
Views1.1K

Black box AI is bad AI —  гласит слоган исследовательской группы Pr(AI)2R (Practical AI Alignment and Interpretability Research). Её основал прошлым летом стэнфордский автор Аттикус Гигер (Atticus Geiger). Своей миссией группа считать превратить AI в “хороший AI”,  то есть сделать его интерпретируемым.  

Пока авторы выпустили три работы: Rigorously Assessing Natural Language Explanations of Neurons (лучшая статья 2023 по версии BlackBoxNLP), в которой попытались провести интерпретацию на уровне нейронов, Linear Representations of Sentiment in Large Language Models,  где исследовали репрезентацию настроения в LLM и RAVEL: Evaluating Interpretability Methods on Disentangling Language Model Representations, где представили бенчмарк для оценки интерпретируемости. Есть и более ранние работы Гигера, в частности, он предложил исследовать внутренности LLM с помощью интервенций (изменения внутренних состояний). Суть проста: если зафиксировать скрытое состояние, и выход модели поменяется так, как будто какой-либо компонент производил это состояние, то это даёт нам право установить причинно-следственную связь.   Но тут расскажем о том, к каким конструктивным идеям приводит исследование интерпретируемости. Как говорится, критикуешь — предлагай. 

Читать далее
Rating0
Comments0

Information

Rating
Does not participate
Registered
Activity