Pull to refresh
1
0

Пользователь

Send message

Знай сложности алгоритмов

Reading time2 min
Views1M
Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
Читать дальше →
Total votes 312: ↑296 and ↓16+280
Comments99

Строки в игровых движках

Level of difficultyEasy
Reading time15 min
Views11K

Исторически потребность в строках и их использование в игровых движках было довольно ограниченое, кроме, разве что, локализации ресурсов, где была необходимость полноценной поддержки чего-то отличного от набора ASCII символов. Но, при желании, даже эти ресуры разработчики умудрялись упаковать в доступные 200 элементов набора ASCII, а учитывая что игра обычно запускается только в одной локали, то никаких потребностей в конвертации не было. Но есть тут и отличия от стандарта, стараниями Sony практически с начала нулевых, еще до 20 стандарта разработчикам игр были доступны несколько моделей символьных литералов. Стандартый ASCII на PS1 и частичная поддержка Unicode (ISO 10646), с выпуском сдк для второй плойки добавили поддержку UTF-16 и UTF-32, а после выхода PS3 добавили поддержку UTF-8.

strcpy(destination, source);
Total votes 20: ↑20 and ↓0+24
Comments11

Как устроена языковая модель без перемножения матриц

Level of difficultyMedium
Reading time4 min
Views6.3K

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

Поэтому возникает естественное желание облегчить эту самую массивную часть вычислений и ускорить таким образом любую архитектуру. Периодически возникают новые подходы и идеи, тут расскажем о последней громкой статье по этой теме — Scalable MatMul-free Language Modeling.

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

Launcher для GoodbyeDPI – понятный способ обойти все блокировки и восстановить YouTube в России

Level of difficultyEasy
Reading time2 min
Views273K

Сейчас опишу интуитивно понятный способ восстановления работоспособности YouTube и обхождения любых блокировок провайдера на Windows компьютере. Уверен, что статью по указке РКН быстро удалят, так что если тема вам интересна, дочитайте до конца, сразу скачайте себе программу, даже если планируете использовать после. Заносить в закладки особого смысла нет. Ну и ставьте лайк. Отдельно также следует повысить карму ValdikSS - Пользователь / Хабр (habr.com) автору уникального решения GoodbyeDPI, который публиковал статью с описанием своего решения пару недель назад тут: Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу, теперь там банер РКН и слова «Эта интернет-страница удалена из публичного доступа по юридическим причинам».

Я не буду заново описывать техническое решение GoodbyeDPI, кратко это программа (или служба ОС Windows) позволяющая обнаруживать «заглушки» созданные провайдерами по указанию РКН для блокировки небогоугодных сайтов. Программа бесплатно распространяется на GitHub, является консольной утилитой мало понятной рядовому пользователю. Полное описание и ссылки есть на NNMClub ⚡ Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу. GoodbyeDPI и ReQrypt + Blockcheck – ресурс, конечно же, заблокирован у вас, если еще не установлен какой-либо способ обхода блокировок.

Сейчас появилось решение в виде графической оболочки для GoodbyeDPI, которое на русском языке позволяет в пару кликов решить проблемы медленного YouTube и не работающих сайтов. Решение Launcher for GoodbyeDPI, это простое окошко настройки к GoodbyeDPI, который также идёт в комплекте. Скачивайте с сайта автора, или с моего зеркала.

Восстановите YouTube и запрещенные сайты
Total votes 207: ↑194 and ↓13+217
Comments182

Исследование влияния сопроводительного письма на приглашение к собеседованию. Или как я сделал 1000 откликов на вакансии

Level of difficultyEasy
Reading time5 min
Views44K

Однажды понадобилось мне заняться поиском работы и, вдруг, вспомнил, что думал проверить одно утверждение от HR в разных статьях: "Пишите сопроводительные письма". Нужно их писать или нет, я решил проверить, совместив сразу полезное с полезным. В этой статье покажу вам аналитику, которую получилось собрать и результаты моего исследования, и так же расскажу несколько личных интересных рассказов о своём опыте собеседований.

Читать далее
Total votes 98: ↑94 and ↓4+118
Comments146

Llama 3.1 и Mistral Large 2

Reading time2 min
Views5.7K

В прошлом месяце вышли две интересных модели - Llama 3.1, улучшенная версия Llama 3, и Mistral Large 2.

Самое заметное отличие Llama 3.1 от предыдущих моделей - у нее есть версия 405B- 405 миллиардов обучаемых параметров. Это самая большая открытая языковая модель, и опубликованные метрики показывают ее производительность на уровне GPT-4. Тесты проводились как на общих бенчмарках, например MMLU, так и специализированных - на код и математику.

Для меня особенно интересными показались улучшенные мультиязычные возможности этой модели, так как я давно экспериментирую с обучением LLM на мультиязычных данных, моя последняя модель ruslandev/llama-3-8b-gpt-4o-ru1.0 превзошла GPT-3.5 на русскоязычной версии бенчмарка MT-Bench.

Llama 3.1 поддерживает семь языков, кроме английского - французский, немецкий, хинди, итальянский, португальский, испанский и тайский. Русского в списке нет, как легко заметить, но это не значит, что в корпусе базовой модели нет примеров на русском. Есть, и предостаточно, это становится очевидно при файнтюнинге. У меня есть мой собственный датасет для файнтюнинга ruslandev/tagengo-rus-gpt-4o, который я сгенерировал из преимущественно русскоязычных промптов датасета Tagengo с помощью GPT-4o.

Теперь о минусах модели Llama 3.1 - файнтюнинг 405B версии обойдется дорого, так как даже при сжатии в 4bit необходимо выделить около 200 ГБ VRAM для такой задачи. Поэтому я файнтюнил версию 8b на вышеупомянутом датасете, арендуя две видеокарты A100 на облачном сервисе immers.cloud. Но я не заметил особого превосходства версии 3.1 над третьей версией. Даже наоборот, я столкнулся с несколькими проблемами - например, 3.1 после файнтюнинга на моем датасете показала тенденцию прерывать генерацию, не завершив ответ - до причины я так и не докопался, но у Llama 3 такой проблемы не было. 

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

Чиним замедление YouTube на уровне роутера

Level of difficultyMedium
Reading time6 min
Views643K

Всех категорический приветствую. Буквально первого августа, прямо в ночь, стал у меня жутко лагать YouTube. Естественно, мне это сильно не понравилось. Ну, что же, давайте разбираться, почему и как это исправить в условиях моей личной сети.

Что случилось?

Хорошо описано произошедшее здесь, на Хабре. Если совсем кратко, своими словами - во время установки SSL соединения в открытом виде домен передается к которому мы подключаемся(так называемое SNI). И если это googlevideo.com то начинают твориться "интересные вещи". Можно проверить это локально коммандами из статьи.

$ curl https://speedtest.selectel.ru/100MB -o/dev/null

Читать далее
Total votes 360: ↑357 and ↓3+412
Comments1053

Bleeding-edge обход блокировок с полной маскировкой: настраиваем сервер и клиент XRay с XTLS-Reality быстро и просто

Level of difficultyEasy
Reading time11 min
Views496K

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

Но кое о чем мы не поговорили. Во второй статье я вскользь упомянул самую передовую и недетектируемую технологию обхода блокировок под названием XTLS-Reality, и пришло время рассказать о ней поподробнее, а именно - как настроить клиент и сервер для нее.

Кроме того, что этот протокол еще более устойчив к выявлению, приятным фактом будет и то, что настройка сервера XTLS-Reality гораздо проще, чем описанные ранее варианты - после предыдущих статей я получил довольно много комментариев типа "А что так сложно, нужен домен, нужны сертификаты, и куча всего" - теперь все будет гораздо проще.

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

Симуляция живущего мира, живые NPC

Level of difficultyEasy
Reading time9 min
Views16K

Давно уже вынашиваю такую идею, периодически продумываю разные концепты. Еще когда занимался картами для WC3 хотел сделать симуляцию, когда каждый NPC в игре - герой, со своими целями и потребностями. NPC бы были такими же героями, как и игрок: фармили бы опыт и предметы, сражались бы с друг другом и т.д. Но если отойти от wc3 - суть концепта такая же - каждый NPC реально "живет" в игре. Это в теории поможет создать "реальный" живой мир, с которым игрок может взаимодействовать.

Читать далее
Total votes 25: ↑22 and ↓3+26
Comments43

Удалить удаленку. Почему нас возвращают в офисы

Level of difficultyEasy
Reading time8 min
Views66K

Удаленка - сколько здесь хорошего для просто специалиста ИТ-сферы. Да и любой, где она возможна. Сама мысль о возможности сидеть, где тебе удобно и получать зарплату греет не хуже камина осенним вечером. Сейчас даже кранами в доках рулят на удаленке. Но как мы пришли к этому? Когда все началось? 

Многие из вас помнит зарю ИТ-индустрии, когда было модно стать “фрилансером” и чилить на Бали, под пиво рисуя сайты. Хорошее было время… Для тех, кто успел вкатиться. 

Начиная с 2005, вместе с  ростом запроса от рынка, количество аутсорс-контор стало расти, как грибы после дождя. Фрилансеры остались, но их исключительность начала уходить: ведь галеры предлагают тоже самое (а то и лучше) за примерно тот же самый ценник. Только без гемора для Заказчика.

Можно с пеной у рта спорить, кто больший гад на рынке, но для энтерпрайза и МСБ при адекватных бюджетах фрилансер – рисковый ресурс. В отличии от аутсорс компании. Чтобы начать работать надо подписать рамочный договор с юрлицом (желательно в юрисдикции твоего головного офиса) и все – можно приступать. В случае форс мажора –  отвечает конкретное ООО “Веб Мастера”, а не условный Коля Усов с 543 положительными оценками на FL.RU. Он таки реально рисует твой сайт, сидя на Бали. Но в перерывах между сессиями рехаба и рейвов. Если найдет время. 

Не буду вас пугать и вводить в заблуждение – с фрилансерами все прекрасно. Ковид показал, что толку от них зачастую столько же, а то и больше, чем от штатной команды. А всякие самозанятые и прочие digital nomad visa по прежнему привлекают свежую кровь в стан любителей свободы. Подтверждает мои слова и статистика. 

Читать далее
Total votes 54: ↑43 and ↓11+39
Comments306

Как развивалась технология экстремального сжатия LLM: от QuIP до AQLM с PV-tuning

Reading time4 min
Views9.1K

Мы живём в эпоху LLM — компании применяют на практике всё более крупные модели с миллиардами параметров. Это здорово, потом что большие модели открывают пользователям сервисов новые возможности, но не всё так просто. Размер накладывает ограничения — запускать такие модели очень дорого, а на пользовательских компьютерах — ещё дороже и сложнее. Поэтому часто исследователи и инженеры сначала обучают большую модель, а потом придумывают, как сжать её с минимальными потерями качества, чтобы сделать доступнее. 

Модели выкладываются в формате float16, где на один вес выделяется 16 бит. Два года назад человечество научилось хорошо сжимать нейросети до 4 бит с помощью таких методов, как GPTQ. Но на этом исследователи не остановились, и сейчас актуальная задача — сжатие моделей до 2 бит, то есть в 8 раз. 

Недавно исследователи Yandex Research совместно с коллегами из IST Austria и KAUST предложили новый способ сжатия моделей в 8 раз с помощью комбинации методов AQLM и PV-tuning, который уже доступен разработчикам и исследователям по всему миру — код опубликован в репозитории GitHub. Специалисты также могут скачать сжатые с помощью наших методов популярные опенсорс-модели. Кроме того, мы выложили обучающие материалы, которые помогут разработчикам дообучить уменьшенные нейросети под свои сценарии.

О том, как исследователи пришли к сегодняшним результатам, мы расскажем на примере двух «конкурирующих» команд и их state-of-the-art алгоритмов сжатия — QuIP и AQLM. Это короткая, но увлекательная история «противостояния» исследователей, в которой каждые пару месяцев случаются новые повороты, появляются оптимизации и оригинальные подходы к решению проблем.

Читать далее
Total votes 35: ↑35 and ↓0+44
Comments14

MIK32 АМУР на плате ELBEAR ACE-UNO от ELRON, мой опыт или как три дня загружать Blink

Reading time4 min
Views6.3K

Здравствуйте все! ✋

Наконец-то ко мне пришёл долгожданный MIK32 АМУР на плате ELBEAR ACE-UNO от ELRON. Нормально так мне с ним пришлось по возиться, в какой-то момент уже подумал что прислали "кирпич", оказалось просто есть кое-какие нюансы о которых я сейчас расскажу.

Микроконтроллер долгое время не хотел определяться, с начала не заработал PlatformIO, библиотека MIK32 не установилась, выскакивала ошибка. Теперь я знаю что невнимательно прочёл инструкцию, но тогда не смог установить. В инструкции обратите внимание на ссылки wiki.mik32.ru и сделайте всё в точности как там описано, не спешите (:

Потом я установил MikronIDE, но OpenOCD писал ошибку, мол к JTAG ничего не подключено. Точнее ошибку сначала выдавал Uploader Микрона, а он в свою очередь обращался к OpenOCD.

Ошибка сначала выглядела так.

Читать далее
Total votes 29: ↑23 and ↓6+27
Comments54

Программируем систему окружающей среды из игры Divinity: Original Sin 2 на Python

Level of difficultyEasy
Reading time8 min
Views6.3K

В этой статье мы попробуем запрограммировать логику работы поверхностей из Divinity: Original Sin 2, ролевой игры с пошаговой боевой системой от создателей Baldur's Gate 3. Суть системы в том, что заклинание или предмет может создать в игровом мире поверхность (облако пара, лёд) из пива, яда, нефти, огня и т. д. Каждая поверхность по‑своему взаимодействует с персонажами. Более того, под воздействием других заклинаний или предметов поверхности будут динамически меняться — их можно благословить или проклясть, прогреть или заморозить, наэлектризовать или полностью уничтожить.

Читать далее
Total votes 4: ↑3 and ↓1+4
Comments8

5 советов по разработке игр от соло-разработчика

Level of difficultyEasy
Reading time6 min
Views11K

Полтора года я занимаюсь разработкой игр, а последние несколько месяцев посвятил созданию своего первого полностью самостоятельного проекта. У меня не было подобного опыта, так как ранее я участвовал в создании игр на должности Unity‑разработчика, и объём моих задач был ограничен. А теперь мне необходимо всё делать самостоятельно. Хоть я и делаю игру для мобильных устройств и веба, но чётко ощущаю, что её разработка затянулась.

В связи с этим я начал часто задумываться над причинами моего столь медленного темпа и смог сформировать несколько советов, основанных на моём опыте. Какие‑то из них могут показаться вам очевидными и лежащими на поверхности, но я считаю, что всё же такие вещи лучше «проговаривать вслух». Сразу хочу отметить, что всё написанное ниже, в бОльшей степени, будет полезно только начинающим соло‑разработчикам или молодым командам из двух‑трёх человек.

Читать далее
Total votes 28: ↑25 and ↓3+30
Comments9

Применяем стандартные алгоритмы в C++. Семь примеров

Level of difficultyMedium
Reading time8 min
Views15K

Привет, Хабр! Меня зовут Николай, я разработчик С++ в SimbirSoft. В этой статье я хочу поделиться своим опытом применения алгоритмов. 

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

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

Прежде чем перейти к примерам, необходимо отметить основное преимущество алгоритмов: они позволяют упростить код и повысить читаемость (или самодокументирование, которое позволяет на основании названия алгоритма понять, что делается), обобщить код. Начиная с C++17, алгоритмы могут выполняться параллельно, реализация алгоритма может быть жестко с оптимизирована компилятором по сравнением с обычным кодом.

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

Возможности С++: от стандартных алгоритмов до диапазонов (Ranges)

Level of difficultyMedium
Reading time10 min
Views6.7K

Привет, Хабр! Меня зовут Николай, я разработчик С++ в SimbirSoft. В предыдущей статье мы с вами рассмотрели применение стандартных алгоритмов в повседневном коде и их преимущества над обычными циклами. В продолжение этой темы мне хотелось бы рассказать о недостатках стандартных алгоритмов и способах их решения с помощью библиотеки Ranges. Практические примеры я разбил на три части: в первой показаны обычные циклы, во второй — вариант написания с помощью алгоритмов (но не всегда можно это сделать), в третьей – с использованием Ranges. Этот материал будет полезен тем разработчикам, которые хотят применять новые стандарты и подходы у себя на проектах.

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

Он победил LLM RAG: реализуем BM25+ с самых азов

Level of difficultyEasy
Reading time18 min
Views15K

Привет, меня зовут Борис. Я автор телеграм канала Борис опять. Периодически мне на глаза попадается что-то интересное и я глубоко в этом закапываюсь. В данном случае это алгоритм поиска BM25+, который победил продвинутые методы векторного поиска на LLM.

Разберемся, что это за зверь и почему он так хорошо работает. В этой статье мы реализуем его на Python с нуля. Начнем с самого простого поиска, перейдем к TF-IDF, а затем выведем из него BM25+.

Статья подойдет тем, кто вообще ничего не знает о поиске, а более опытные ребята могут пролистать до реализации алгоритма.

Код доступен в Google Collab.

Читать далее
Total votes 33: ↑32 and ↓1+39
Comments13

Аналоговые вычисления для искусственного интеллекта: как делать MAC-операцию при помощи закона Ома

Level of difficultyMedium
Reading time13 min
Views4.9K

Присутствие нейронных сетей в нашей жизни становится все более распространенным, от голосовых ассистентов до узкоспециальных САПР. Несмотря на то, что область применения нейросетей расширяется, их потенциал все еще сильно ограничен удручающей энергоэффективностью существующих хардверных решений. Специализированные AI-чипы выходят в производство, как горячие пирожки, а ожидаемый рост энергопотребления нагруженных AI датацентров уже скоро позволит им отобрать у атомных электростанций звание главного врага всех экоактивистов. Разумеется, над решением проблемы энергопотребления AI или, будем честны, над решением проблемы энергопотребления цифрового умножения работает огромное количество исследователей по всему миру, на всех возможных уровнях абстракции, от математиков-фундаментальщиков до разработчиков передовых литографов.

А дальше, как это регулярно случается, внезапно оказалось, что все новое — это хорошо забытое старое, и спасение может заключаться в том, чтобы откопать давно забытые за бесперпективностью аналоговые вычисления и посмотреть на них свежим вглядом в свете новых задач.

Интересно, причем тут закон Ома?
Total votes 25: ↑25 and ↓0+32
Comments17

Разбираем KAN по полочкам

Reading time4 min
Views7.8K

Недавно аспиранты из MIT выпустили очень интересную статью про концептуально новый подход к проектированию наверное самого базового "кирпичика" нейронок - полносвязного слоя.

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

Читать далее
Total votes 23: ↑21 and ↓2+27
Comments5

Сумасшествие «Артемиды» или почему она обречена на провал

Reading time27 min
Views27K

Более полувека назад, 7 декабря 1972 года, с космодрома на мысе Канаверал стартовала ракета, уносящая к Луне трех астронавтов и луноход. После трехдневного полета двое из них спустились на поверхность Луны в хрупком посадочном модуле. В течение трех дней астронавты исследовали лунный ландшафт, собирали образцы пород и испытывали луноход. Затем они вернулись на орбиту, где их ждал третий член экипажа. Вместе они отправились обратно на Землю, приводнившись в южной части Тихого океана 19 декабря 1972 года. Эта миссия, получившая название «Аполлон-17», стала последним на сегодняшний день случаем, когда человек покидал пределы низкой околоземной орбиты.

NASA планирует вернуть американских астронавтов на Луну в конце 2026 года в рамках миссии «Артемида-3». Подобно «Аполлон-17», два астронавта проведут около недели на лунной поверхности, собирая образцы и делая памятные селфи. Однако, в отличие от исторической миссии, «Артемида-3» будет осуществлена без лунохода.

Несмотря на внешнюю схожесть с «Аполлон-17», «Артемида-3» значительно отличается по сложности и стоимости. В то время как «Аполлон-17» была запущена одной ракетой и стоила $3,3 миллиарда (в пересчете на 2023 год), «Артемида-3» потребует десятка запусков тяжелых ракет и обойдется в астрономическую сумму, которую NASA отказывается раскрывать. По оценкам экспертов, стоимость миссии может достигать 7–10 миллиардов долларов.

Сложность «Артемиды-3» поражает: одноразовый посадочный модуль станет самым тяжелым космическим аппаратом в истории, а научный результат миссии — небольшая коробка с лунными образцами — будет меньше, чем у «Аполлона-17». Более того, вся программа зависит от технологий, которые еще предстоит разработать и протестировать в течение ближайших полутора лет.

Возникает закономерный вопрос: если мы смогли отправить человека на Луну полвека назад, почему это так сложно сделать сейчас, учитывая технологический прогресс?

Читать далее
Total votes 109: ↑93 and ↓16+102
Comments364
1
23 ...

Information

Rating
6,110-th
Location
Челябинск, Челябинская обл., Россия
Registered
Activity

Specialization

Software Developer, Backend Developer
C++
Golang