Pull to refresh
9
0
Евгений Горбов @DOLARiON

User

Send message

Архитектура Stable Diffusion: Face ID, Lighting

Level of difficultyMedium
Reading time7 min
Views3.6K

Это перевод моей статьи на medium.com.

Год назад я провёл краткий обзор по теме переноса стиля. Пару месяцев назад я решил вернуться к этому вопросу и исследовать прогресс за последний год. За это время случилось много значимых изменений: архитектура open-source модели Stable Diffusion стала, лидирующей среди моделей для задач генерации изображений. Особенно её модификация SDXL [1]. Hugging Face превратился в лидирующую платформу для запуска модели Stable Diffusion с помощью библиотеки diffusers [2].

Читать далее
Total votes 19: ↑17 and ↓2+21
Comments0

Как обойти лимит Telegram API для групп свыше 10,000 участников

Level of difficultyEasy
Reading time3 min
Views4.5K

Здравствуйте! Если вы когда-либо пытались извлечь данные пользователей из крупных телеграм-групп и каналов, вы наверняка знаете о технических сложностях, которые могут возникнуть. В рамках нашего проекта — платформы для спикеров и коучей — мы столкнулись с необходимостью эффективно продвигать курсы, используя рекламу в других группах и каналах. Однако далеко не каждый готов предоставить доступ к своему каналу или группе, особенно если предлагаемые темы курсов перекликаются с их собственными.

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

Эта инициатива казалась нам многообещающей, однако в процессе реализации мы столкнулись с серьёзным ограничением. При попытке загрузить список пользователей из группы на 13,000 человек, система смогла обработать только 10,000. Это ограничение API Telegram значительно усложнило выполнение задуманного плана, требуя от нас дополнительных технических решений.

Читать далее
Total votes 18: ↑6 and ↓12-4
Comments10

Применение чистой архитектуры в Go

Level of difficultyHard
Reading time13 min
Views11K


Одна из проблем, с которыми мне часто доводится сталкиваться в различных софтверных проектов — это сильная связанность кода, при которой в него так сложно вносить даже простые изменения, не провоцируя нежелательных побочных эффектов. Дело в том, что программисты склонны сосредотачиваться на разработке конкретных фич, не задумываясь о том, как база кода станет развиваться в будущем. Также не все учитывают, что применяемые сегодня библиотеки и фреймворки могут постепенно сойти со сцены спустя несколько месяцев или лет.

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

Большинство этих инструментов – это частности, и выбор большинства из них (кроме языка программирования) можно на некоторое время отложить, пока проект не окрепнет. Поэтому на ранних этапах разработки проекта стоит уделить внимание не тому, при помощи каких инструментов пойдёт реализация. Лучше смоделировать предметную область проекта, а к вышеупомянутым инструментам подходить так, как следует — то есть, как к частностям. Разумеется, чтобы проект был реализован, с такими деталями тоже нужно определиться, но они могут оставаться в некоторой отдельной части кода, не относящейся к предметной области — там, где их будет легко менять, удалять или заменять по нашему усмотрению.

Для решения именно таких проблем с сильной связностью кода многоопытные инженеры создали ряд архитектурных паттернов. Таковы, в частности, чистая архитектура Роберта Мартина («дядюшки Боба»), гексагональная архитектура Алистера Кокбёрна и явная архитектура Герберто Грацы.
Читать дальше →
Total votes 23: ↑21 and ↓2+30
Comments5

Как «убедить» Apple, что ваш iPhone — европейский

Level of difficultyEasy
Reading time3 min
Views15K

Энтузиаст смог сделать свой iPhone европейским. Для этого ему пришлось отключить сервисы определения местоположения, вставить итальянскую SIM‑карту, настроить Wi‑Fi роутер pfSense с указанием страны регистрации (Италии) и отправиться в подвал, где связь не ловит. Всё для того, чтобы обойти ограничения на установку приложений не из App Store.

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

Пошаговая шпаргалка по защите сервера от хакеров и другой нечисти

Level of difficultyEasy
Reading time7 min
Views22K

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

Представьте: вот арендовали вы сервер, запустили на нем SAMP или Minecraft, а через время видите, как наступает хаос. Виртуальную машину взломали и с открытым фанатизмом портят сборку плагинов, которую вы так долго делали.

Привет! На связи Йети — самый йетический автор Vscale. Это моя первая статья на Хабре. В ней я расскажу, как защитить сервер от хактевистов и другой нечисти. Подробности под катом! :)
Читать дальше →
Total votes 60: ↑52 and ↓8+60
Comments23

Как сделать и настроить свой CDN

Level of difficultyMedium
Reading time7 min
Views10K
CDN (сеть доставки контента) представляет собой группу серверов, размещаемых в разных географических регионах с целью обеспечить быструю загрузку контента для пользователей из этих регионов. Чаще всего сети доставки контента используются для ускорения загрузки статических файлов: картинок, видео, скриптов, zip-архивов. Каждый из CDN серверов просто хранит одни и те же файлы, а пользователь получает их с ближайшего сервера.

Хранение контента у большинства сетей доставки контента организовано так: CDN сервер, получив в первый раз от пользователя запрос на отдачу файла, загружает его с оригинального сервера к себе, кэширует и тут же отдает пользователю. Для всех последующих запросов файл уже выдается из кэша. Некоторые сервисы позволяют настраивать длительность хранения кэшируемых данных, а также их предварительную загрузку (прекэш).

Иногда может понадобиться настроить собственную сеть доставки контента. Давайте рассмотрим, для чего это нужно и как это сделать.


Это наша будущая CDN из 5 серверов, которая будет раздавать контент на весь мир
Читать дальше →
Total votes 27: ↑27 and ↓0+32
Comments13

Как мы применили нейросеть Stable Diffusion в создании контента для интернет-магазина

Level of difficultyMedium
Reading time11 min
Views8.4K

Что делать, если то самое классное изображение никак не удается найти, а у заказчика пока нет ресурса предоставить нужный контент? Что можно придумать для разделов каталога, когда есть только фото для продуктовых карточек, чтобы это выглядело красиво? Как при этом не забыть о метафорах и ассоциациях бренда и создать необходимое настроение на сайте? Да еще и чтобы заказчик все это согласовал без правок…

Читать далее
Total votes 18: ↑13 and ↓5+10
Comments20

Почему работодатель хочет, чтобы вы были ИП

Reading time7 min
Views63K

Представим сферическую ситуацию в вакууме. Вы никогда до этого не были предпринимателем, только работали по найму. У вас на руках два оффера. Оба по 100 000 руб. на руки, оба на плюс-минус одинаковых условиях. Офис, 5 дней в неделю по 8 часов. Но один работодатель хочет заключить с вами трудовой договор, а другой предлагает вам оформиться как ИП.

Для начала зададимся вопросом, почему работодатель предлагает оформить отношения с вами как с ИП, а не берёт в штат? Если кратко, то работодателю так проще и дешевле. Почему? Давайте разберёмся.

Читать далее
Total votes 118: ↑106 and ↓12+120
Comments268

Двое на самокате, не считая кучи разных датчиков: как мы учились определять поездки вдвоем

Reading time14 min
Views54K

Всем привет, на связи Фарук, инженер-разработчик электроники и встроенного ПО в Whoosh (читается как ВУШ, ощущается как вжууух). Работаю я в embedded отделе (хардкорные программисты, что пишут прошивку на C для различных железок и проектируют эти самые железки), но в основном занимаюсь анализом различных данных от нашего IoT модуля и разработкой алгоритмов для работы с этими данными.

Наша компания — сервис аренды электросамокатов (а местами еще и электровелосипедов) или, иными словами, кикшеринг. О том, как мы к этому пришли и что из себя представляем можно почитать здесь.

Одно из отличий использования шерингового самоката от личного — наличие определенных правил. Например, вы видели когда-нибудь парочку влюбленных, вдвоем на самокате, исчезающих в закате? Или может наблюдали троих парней, которые в обнимку, преодолев смущенье, едут навстречу новым приключеньям? А может быть вы видели как чей-то отец, словно швец, жнец и на самокате ездец, с одним ребенком подмышкой а с другим на шее смело едет по парковой аллее?
Вызывают ли у вас эти картины гнев и праведное негодование? А может быть вы и сами не прочь прокатиться с другом/подругой на одном самокате? У нас для вас есть две новости.

Во-первых, так нельзя. А во-вторых, добро пожаловать под кат.

На самокат и под кат
Total votes 112: ↑104 and ↓8+125
Comments312

Как бизнесу заработать 3,8 млн рублей с помощью трафика, окупив бюджет в 2 раза

Level of difficultyEasy
Reading time6 min
Views6.4K

Сложный продукт с отложенным спросом в суперконкурентной нише. Масштабировать трафик на него — задача не из простых. Но мы не испугались и принесли клиенту дополнительных продаж на 3,8 млн рублей, окупив рекламный бюджет в 2 раза.

Всем привет! Это Алена Мумладзе, основательница аналитического агентства диджитал-рекламы HotHeads Band. В первой половине кейса мы покажем наши лучшие решения и логику работы. А во второй дадим полезные советы: какие креативы приносят результат и какие воронки работают.

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

Как мы тестировали большие языковые модели для модерации отзывов

Reading time10 min
Views2.2K

В приложении «Магнит: акции и доставка» можно оставлять отзывы на товары. Отзывы модерируются: мы публикуем те, которые считаем полезными для других покупателей, — они должны описывать потребительские свойства товара. Отклоняем все остальные: как правило, это жалобы на ценники, сервис в магазине, условия хранения либо просто нерелевантные тексты. Отзывы с жалобами обрабатывают службы поддержки и сервиса.

Рассказываем о том, как мы попробовали применять большие языковые модели, чтобы автоматизировать модерацию отзывов. 

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

Введение в Router Cosmo — потрясающе быстрый шлюз с открытым исходным кодом Federation V1/V2

Reading time12 min
Views2.3K

Предприятия имеют разнообразные зависимости от данных — внутренние микросервисы со специализированными доменами данных, устаревшие системы с собственными форматами данных, а также сторонние API и приложения SaaS со своими уникальными моделями данных и конечными точками.

TL;DR: разные (и часто устаревшие) технологии, которые нужно как-то объединить.

Federated GraphQL выделился как главное решение для такого объединения в сфере предприятий, и Router (или Gateway) в Federation действует как ключевой элемент, который связывает все эти разрозненные источники данных вместе, делая их доступными через единственный, согласованный API, сохраняя при этом адаптивность. Это, на самом деле, ключ к тому, как Federated GraphQL позволяет создавать масштабируемые и модульные архитектуры.

Сегодня мы рассмотрим высокопроизводительный, открытый, совместимый с Federation V1/V2 Router от WunderGraph Cosmo. Мы расскажем, что он делает, почему он так важен для стека Cosmo, как вы можете разместить его самостоятельно, а также настроить и расширить его с помощью своего собственного кода на Go.

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

Объединить большие языковые модели реально с помощью mergekit?

Level of difficultyMedium
Reading time13 min
Views2.1K

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

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

Слияние моделей — это методика, которая объединяет две или более LLM-модели в одну. Это относительно новый и экспериментальный метод создания новых моделей без использования GPU, а значит, недорого. И да, это работает. Причем работает на удивительно хорошо, что в результате дает множество современных моделей на доске лидеров Open LLM.

Сегодня  мы рассмотрим, как работает объединение больших языков моделей с использованием библиотеки mergekit.  Если более конкретно, то мы рассмотрим четыре метода слияния и предоставим примеры конфигураций. Затем мы воспользуемся mergekit для создания собственной модели, Marcoro14-7B-slerp, которая стала самой эффективной моделью на доске лидеров Open LLM (02/01/2024).

Код доступен на GitHub и Google Colab. Кстати, для простого запуска mergekit можно использовать LazyMergekit.

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

Автоматизированная торговля акциями с использованием глубокого обучения с подкреплением

Level of difficultyMedium
Reading time7 min
Views11K

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

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

Читать далее
Total votes 18: ↑15 and ↓3+17
Comments12

От хаоса к порядку. Как мы внедряем стандарты в CDEK

Level of difficultyMedium
Reading time11 min
Views4.7K

Привет, Хабр! Меня зовут Олег Бондарь, я архитектор решений в CDEK. В этой статье расскажу о стандартах — сводах правил и требований, которые позволяют всем участникам процесса быть в общем контексте, действовать единообразно и совершать меньше ошибок. Кроме того делают взаимодействие между людьми и системами немного проще.

Статья будет полезна менеджерам проектов, разработчикам, тестировщикам, аналитикам и другим IT‑специалистам. Поговорим о способах выработки и применении стандартов, их влиянии на проектирование, разработку, тестирование и стабильность системы в целом. Для примера возьмем ERP CDEK, которая ежедневно обеспечивает работу десятков тысяч пользователей, нескольких сотен тысяч клиентов и позволяет нам обрабатывать до полумиллиона заказов в день.

Читать далее
Total votes 50: ↑47 and ↓3+45
Comments28

ANNA – сервис для автоматической разработки нейронных сетей

Level of difficultyEasy
Reading time10 min
Views7.6K

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

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

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

Читать далее
Total votes 32: ↑31 and ↓1+31
Comments2

Автоматизируем поиск ценной информации в групповых чатах Telegram с помощью LLM

Level of difficultyMedium
Reading time17 min
Views11K

Устали мониторить бесконечные групповые чаты в Telegram в поисках важной информации? Решение есть! Пишем компактное приложение на Python, которое будет делать это за нас с использованием LLM.

Читать далее
Total votes 21: ↑19 and ↓2+17
Comments17

Как устроена наша PIM-система, и почему мы не используем ни реакт, ни микросервисы

Level of difficultyMedium
Reading time12 min
Views9.7K

Пара слов обо мне. У меня никогда не было серьезного плана делать свой продукт, открывать под это дело компанию, погружаться в custdev и вот это вот всё. Днем я работал в сеньёр девелопером, по вечерам - делал pet-проекты типа онлайн версии настольной игры или онлайн-редактора пиксель-арта, и все было хорошо.

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

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

У нас нет кубернетеса, кликхауса, реакта, бессерверных вычислений, рэббит эмкью, кафки, кибаны, графаны, дженкинса, ноды, эластика, и много чего ещё нет. Зато есть дотнет последней версии, энтити фреймворк, нгинкс и шваггер. Я постараюсь рассказать, как и почему мы дошли до такой жизни, и жизнь ли это.

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

Читать далее
Total votes 31: ↑29 and ↓2+33
Comments38

Методы глубокого хэширования нового поколения

Level of difficultyHard
Reading time4 min
Views2.7K

В последние годы наблюдается значительный рост объема данных, которые генерируются и сохраняются в различных форматах и большом масштабе. Одним из ключевых направлений в этой области является глубокое хеширование, которое обещает обеспечить компактное представление данных и быстрый поиск по содержанию. В этом контексте, различные методы глубокого хеширования, такие как Deep Lifelong Cross-modal Hashing, LLSH (Deep Neural Network-based Learned Locality-Sensitive Hashing), Graph-Collaborated Auto-Encoder Hashing, Sparsity-Induced Generative Adversarial Hashing (SiGAH) и CLIP Multi-modal Hashing, были предложены для обеспечения эффективного сопоставления между различными модальностями данных.

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

Читать далее
Total votes 5: ↑2 and ↓30
Comments0

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

Level of difficultyMedium
Reading time45 min
Views146K

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

Вы, наверняка, помните отличный цикл статей на Хабре в прошлом году от пользователя MiraclePtr, который рассказывал о разных методах блокировок, о разных методах обхода блокировок, о разных клиентах и серверах для обходов блокировок, и о разных способах их настройки (раз, два, три, четыре, пять, шесть, семь, восемь, десять, десять, и вроде были еще другие), и можете спросить, а зачем еще одна? Есть две основные причины для этого.

Читать далее
Total votes 446: ↑438 and ↓8+490
Comments351
1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity