Pull to refresh
-28
0.2

Интересуюсь природой вещей

Send message

От текста к краткому изложению: библиотека Sumy

Level of difficultyEasy
Reading time4 min
Views3.2K

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

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

Читать далее

Создание полного Fast-API сервиса с фронтендом и деплоем за полчаса

Level of difficultyEasy
Reading time15 min
Views28K

В последнее время на Хабре я опубликовал более десяти крупных статей на тему разработки собственного API с использованием FastAPI. Однако, в основном, эти статьи были теоретическими. Сегодня я решил создать чисто практическую статью, в которой мы с нуля и максимально быстро разработаем полноценный веб-сервис с фронтендом и бэкендом.

После этого мы выполним деплой этого приложения, чтобы любой пользователь мог им воспользоваться.

Читать далее

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

Level of difficultyMedium
Reading time6 min
Views668K

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

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

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

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

Читать далее

Как быстро проверить Linux сервер на предмет взлома

Reading time4 min
Views128K
Примерно два года назад я арендовал у одного немецкого хостера не очень мощный сервер на базе Centos 5.2. На нём живут несколько вебпроектов, приносящих некоторую прибыль, и поэтому, я стараюсь присматривать за ним по мере возможности.
На Centos есть стандартный анализатор логов Logwatch, который запускается ежедневно по крону, анализирует содержимое /var/log, делает сводный отчет и присылает его по электропочте. В один прекрасный день я обнаружил в этом отчете запись:

--------------------- yum Begin ------------------------ 
 
 Packages Installed:
    lzo2 - 2.02-3.el5.rf.i386
    dnstracer - 1.8-1.2.el5.rf.i386
    openvpn - 2.0.9-1.el5.rf.i386

---------------------- yum End -------------------------


В тот момент меня она очень смутила, так как в предыдущий день на сервер я не логинился и тем более ничего не устанавливал. Первое, что пришло в голову — сервер был скомпроментирован. Себя я считал уверенным пользователем Linux, однако я растерялся. Благо в тот момент в icq был мой бывший коллега, лучший системный администратор, которого я знаю, и просто очень хороший человек.
Он помог быстро проверить систему. В результате у меня сформировалось краткое HowTo о том, как быстро проверить свой сервер на предмет взлома. Уверен, что многим Храброчитателям оно будет полезно. Предполагается, что пользователь знаком с консолью Linux/Unix.

Читать дальше →

Замедление YouTube с технической стороны: ограничение и обход

Reading time5 min
Views448K

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

В последнее время замечаю огромное количество информации по поводу замедления Великого, но очень мало где видел конкретику о том, как именно это работает. Одно лишь отчаяние "мы все умрём".

Сразу скажу, что буду говорить обо всём, что известно на данный момент. Понятно, что с этим разбирался далеко не один я: огромное спасибо обывателям ntc party форума за проделанный ресёрч.

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

UPD 10.08.2024 Многие жалуются на недоступность ютуба в целом: не грузит домашнюю страницу. Переживать не стоит, оно обрабатывается всё тем же ТСПУ по всё той же стратегии, обходы должны работать.

Читать далее

Highload на дешевом хостинге: хэш-таблица в MySQL

Reading time3 min
Views21K
Высоконагруженный проект (web-сайт) — не обязательно популярная социальная сеть, видеохостинг или MMORPG. Простейший способ резко повысить требования сайта к железу — перенести хранение сессий в БД. В этой статье мы рассмотрим способ хранить данные в БД, и при этом не жертвовать производительностью. Пожертвовав небольшим объемом ОЗУ можно прилично сэкономить процессорное время. Мы говорим о стиуации, когда недоступны memcached и другие специальные средства кэширования.
Читать дальше →

Мои эксперименты с искусственной жизнью

Level of difficultyEasy
Reading time8 min
Views11K

Сегодня я расскажу про свои эксперименты с симуляцией эволюции.

В мире, разделенном на квадратные клетки живут боты. Боты могут заниматься фотосинтезом, смотреть в 8 направлениях вокруг себя, перемещаться, атаковать друг друга и размножаться делением.

За то, что бот будет делать в текущий ход, отвечает геном. При размножении есть шанс 1/4, что новый бот мутирует. При мутации его геном немного изменяется. Если мутация была положительной - бот может оставить больше потомства, таким образом полезные мутации будут приживаться, а вредные - отсеиваться.

Читать далее

Мои взгляды на программирование на июль 2024 года

Reading time5 min
Views8.1K
Эта статья – собрание убеждений о разработке ПО, которые выработались у меня на сегодняшний день. Всё основано на личном опыте.

Подход к задачам


Основная часть моей работы – разбираться с тикетами, и я до сих пор продолжаю совершенствоваться в этом деле. Вот несколько вещей, которые я открыл для себя в процессе.
  • Разные задачи, проекты и команды требуют разных подходов. Например, сделать пейсмейкер без автоматических тестов было бы безответственным решением – кто-то может от этого пострадать. И вместе с тем, глупо изводиться по поводу автоматических тестов на геймджеме, куда вы отправились на выходных. Содержание понятия «хороший код» меняется в зависимости от контекста, и нужно адаптировать свой подход под конкретную ситуацию.
  • Делайте марш-броски. Бывает, что я ставлю себе цель довести какую-то функциональность до готовности в кратчайшие сроки, пусть даже срезая углы где только можно, с кодом ужасного качества и TODO на каждом шагу. Когда у меня появится что-то рабочее, тогда и буду приводить всё в должный вид. Я пришел к выводу, что это хороший способ обозначить для себя проблемные зоны, а также неплохой путь к ускорению процесса разработки. На эту тему есть статья «Выбросьте первый набросок кода».
  • Если я бьюсь головой об задачу и никак не могу сдвинуться с мертвой точки, значит, необходимо оторваться от нее на какое-то время.
  • Прежде чем начать работу над сложной задачей, я задаю себе вопрос: «А что если вообще этого не делать?» Как правило, вопрос оказывается глупым и выполнять задачу все-таки приходится. Но примерно в пяти процентах случаев я осознаю, что определенную часть работы можно спокойно пропустить.

Читать дальше →

Отличия DeploymentConfig от Deployment и примеры использования

Reading time7 min
Views15K

Deployment и DeploymentConfig — это, казалось бы, похожие объекты API для OpenShift Container Platform. Но на самом деле они предлагают разные гибкие методы управления интерфейсом пользователей. Расскажем о различиях и приведём примеры, когда какие объекты лучше использовать.

Читать далее

Китай разработал еще одну национальную ОС: встречаем TencentOS, форк CentOS

Reading time3 min
Views13K

Источник: digitimes.com

В последнее время Поднебесная активизировала усилия в разработке операционных систем. Сейчас появилась еще одна, в основе которой — дистрибутив CentOS. Китайцы «научили» его поддерживать их процессоры, включая Kungpeng, Hygon и Feiteng. Что это за система?
Читать дальше →

Настройся на RAGAS и настрой RAGAS под себя

Level of difficultyHard
Reading time12 min
Views5.2K

Не секрет, что RAG (Retrieval-Augmented Generation) сейчас является распространённой техникой использования Больших Языковых Моделей (LLM) в вопросно-ответных системах. Ну а где есть ML-модели, там есть и оценка качества. О том, как оценивать RAG-модели и автоматизировать этот процесс под свою задачу, вы прочитаете в данной статье.

Читать далее

Создание процессора с нуля для чайников

Reading time18 min
Views52K

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

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

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

Читать далее

Как я обучил модель, которая понимает русский лучше GPT 3.5 Turbo

Reading time3 min
Views10K

В этой статье я расскажу, как я смог обучить модель, которая превзошла GPT 3.5 Turbo на русскоязычной части MT-Bench. Также я рассмотрю новую конфигурацию для обучения на двух графических процессорах параллельно с помощью accelerate и deepspeed.

Особенный интерес представляет мой датасет для обучения. Он получен из сабсета мультиязычных промтов набора lightblue/tagengo-gpt4 на русском, английском и китайском, всего 10 тысяч примеров, сгенерированных с помощью GPT-4o. Это в 8 раз меньше, чем исходный набор Tagengo, но обученная на последнем Suzume, как показали бенчмарки, лишь очень незначительно превосходит мою модель на ru_mt_bench, а на англоязычном бенче и вовсе уступает ей. Это значит, что я в разы сэкономил на GPU за счет более высокого качества данных, полученных с помощью GPT-4o. 

Я использовал скрипт для получения ответов по заданным промптам. Для генерации русскоязычной выборки я изменил часть скрипта, чтобы выбрать все промпты на русском из Tagengo (8K примеров), так как основной фокус при обучении модели был на русском языке. 

В итоге я получил датасет ruslandev/tagengo-rus-gpt-4o и приступил к обучению.

Для этого я создал виртуальную машину с NVIDIA H100, используя сервис immers.cloud. Для достижения наилучших результатов по instruction-following (что проверяется на MT-Bench) я взял в качестве исходной модели meta-llama/Meta-Llama-3-8B-Instruct. Именно на ней обучена модель Suzume, у которой высокая оценка на MT Bench. Предыдущие эксперименты показали, что базовая Llama-3 8B,  а особенно ее четырехбитная версия для QLoRA  unsloth/llama-3-8b-bnb-4bit - значительно отстает по оценкам бенчмарка.

Читать далее

Оцениваем RAG-пайплайны

Reading time4 min
Views9.6K

RAG (Retrieval Augmented Generation) - это популярный подход, объединяющий извлечение данных из баз и генерацию текста, позволяя моделям AI давать ответы на вопросы, основанные на информации, которую они не видели в процессе обучения. Важным этапом в развитии RAG является его эффективная оценка, и именно здесь на сцену выходит RAGAS (Retrieval Augmented Generation Automated Scoring) - метод автоматизированной оценки, который позволяет не только оценить качество ответов, но и анализировать процесс генерации в деталях.

Читать далее

Быстрее, больше, сильнее: фреймворки Python с параллельной обработкой данных

Reading time12 min
Views14K

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

Читать далее

Древние технологии охлаждения в современном мире

Level of difficultyEasy
Reading time10 min
Views15K

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

Да… Именно ради этого 17 июля 1902 года инженер Уиллис Карриер изобрел первый кондиционер!

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

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

Спрос на энергию во всем мире растет быстрыми темпами. По оценкам, с 2018 по 2050 год он вырастет до 50%. На строительный сектор приходится значительная часть общего потребления энергии (40%) и почти 30% соответствующих выбросов парниковых газов (ПГ). Как правило, традиционные системы отопления, вентиляции и кондиционирования воздуха (HVAC) потребляют почти две трети общего энергопотребления здания. Следовательно, многие исследователи стремятся внедрить стратегии естественной вентиляции и пассивного охлаждения для снижения энергопотребления при одновременном обеспечении теплового комфорта, и улучшения качества воздуха в помещении (IAQ). Люди проводят 80–90% своего времени в закрытых помещениях во время работы и проживания; и поэтому неспособность обеспечить хороший уровень качества воздуха в помещении может повлиять на их здоровье, благополучие и производительность.

Читать далее

Невероятно тупой способ взлома Wi-Fi в самолёте (зато бесплатно)

Level of difficultyEasy
Reading time14 min
Views65K

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

Подключившись к Wi-Fi самолёта, я открыл браузер. Страница сетевого логина потребовала ввести данные кредитной карты. Я поискал карту, которая обнаружилась внутри паспорта. В процессе поисков я заметил, что страница логина предлагает бесплатно войти в мой аккаунт программы авиамиль, хотя я пока ни за что ещё не заплатил. Я решил, что это дыра в файрволле. Мне предстоял долгий путь из Лондона в Сан-Франциско, поэтому я решил её исследовать.

Я вошёл в свой аккаунт JetStreamers Diamond Altitude, перешёл на страницу своего профиля и увидел кнопку редактирования. Она выглядела обычно: отбрасываемая тень, скруглённые углы, ничего особенного. С её помощью можно было поменять имя, адрес и так далее.

Но внезапно я понял, что это необычная кнопка. Она мошенническим образом позволит мне получить полный доступ к Интернету через мой аккаунт программы авиамиль. Это будет медленно и невероятно тупо, но сработает.

Многие коллеги просили меня выполнить ревью их пул-реквестов, потому что я оставлял комментарии типа «опоздало на две недели» или «мешает развёртыванию критического обновления». Но мои идеи тоже важны, поэтому я надел наушники и включил музыку для концентрации. Я забыл зарядить наушники, поэтому Limp Bizkit начал проигрываться через динамики ноутбука. К счастью, никто из пассажиров не был против, так что мы кайфовали вместе.

Прежде чем получить доступ ко всему Интернету через аккаунт программы авиамиль, мне нужно было написать несколько прототипов. Сначала я думал, что напишу их на Go, но потом понял, что если напишу их на Python, то смогу назвать получившийся инструмент PySkyWiFi. Разумеется, я выбрал второй вариант.

Читать далее

Добавляем параллельные вычисления в Pandas

Reading time2 min
Views19K

Возможно вы сталкивались с задачей параллельных вычислений над pandas датафреймами. Решить эту проблему можно как силами нативного Python, так и с помощью замечательной библиотеки — pandarallel. В этой статье я покажу, как эта библиотека позволяет обрабатывать ваши данные с использованием всех доступных мощностей.


Читать дальше →

Эволюция метрик качества машинного перевода — Часть 1

Level of difficultyEasy
Reading time5 min
Views12K

Как правильнее всего измерять качество машинного перевода? Многие слышали о BLEU, но на самом деле метрик много. В этой статье расскажем, какие существуют метрики, как они эволюционировали и какие сегодня наиболее адекватны. Часть 1: эволюция метрик и обзор традиционных метрик.

Читать далее

Мемоизация и каррирование (Python)

Reading time4 min
Views50K
Привет, уважаемые читатели Хабрахабра. В этой статье попробуем разобраться что такое мемоизация и каррирование, и как эти методы реализованы в стандартной библиотеке Python.
Читать дальше →

Information

Rating
4,197-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity