Задать вопрос
  • Можно ли восстановить удалённое 10-й виндой при проверке диска?

    @rPman
    Немедленно прекратите самодеятельность и несите диск на восстановление, но шансов у вас мало.
    Основной рабочий пока первый, с 7кой.
    ...
    После этого ребутнулся в 10ю винду и запустил проверку первого диска.

    Об этом моменте все забывают, что в windows 10 (начиная с win8) есть механизм ускорения загрузки, который при использовании последовательно нескольких ОС может угробить ваши данные (полагаю это сделано специально, как одна из миллиона мер борьбы с linux конкуренцией, иначе об этом бы везде писали большими буквами). Принцип следующий - windows 10 при выключении, закрывает рабочие приложения (делает быстрый logout) а затем вызывает гибернацию (hibernation), сброс оперативной памяти и состояния устройств (включая gpu) на диск в файл hiberfil.sys в корне диска, т.е. не завершая процессы, не закрывая файлы, не сбрасывая кеши записи на диски и кучу всего, что могло бы замедлить этот процесс... при включении, данные очень быстро и эффективно считываются с диска (линейная скорость даже медленных дисков hdd - сотня мбайт/с), включение занимает считанные десяток секунд, после чего идет login и запуск процессов пользователя.

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

    Но вот винда ругнулась на этот диск и я решил его проверить. Забекапил что нужно и на 2й и на 3й диски.
    Что это была за ругань, сообщение в подробностях скорее всего раскроет подробно, что случилось.

    p.s.
    эту фичу зовут Fast Startup (включена в win10 и 11 по умолчанию) можно не выключать всю гибернацию, а вручную выключать компьютер в правильном режиме:
    shutdown -s -t 0

    отключается в Панели управления, электропитание, действия кнопок питания, изменение параметров которые сейчас недоступны, выключить быстрый запуск.
    либо отключить гибернацию полностью, выполнив в командной строке:
    powercfg /h off
    Ответ написан
  • Возможно ли использовать модель LLAMA-405B на обычном железе 64GB + 8GB?

    @rPman
    Да, уже считал, и это действительно реально, с относительно небольшими затратами (16-20т.р.) если тебя устроит скорость исполнения в 15-30 секунд на токен (на твоем железе llama31-70b на процессоре и 64гб оперативке будет работать токен в 1-1.5 секунд).

    Необходимо собрать самый дешевый pcie nvme ssd программный raid0, купив контроллер pcie-x16 3.0 или 4.0 из четырех разъемов nvme либо четыре pcie-4x дешевых 3.0 и закупить самые дешевые nvme ssd диски от 128гб (со скоростями чтения от 2гбайт/сек).

    Затем собрать из них raid0 с чередованием (win/linux это поддерживают) и разместить на нем gguf файл. llama.cpp поддерживает загрузку файла с весами с диска, без выделения оперативной памяти (но она нужна на контекстное окно, в зависимости от его размера это будут десятки гигабайт). Файл будет считываться по кругу целиком, по разу на токен, а значит скорость будет определяться именно этим. 2гб/с*4 диска = 8гб/с, 256гб 4бит квантизация будет считываться за 32 секунды.

    Есть еще ограничения в скорости исполнения из-за процессора, но по уму, если бы была оперативная память то типовой десктопный процессор работал бы на скорости 15-20 секунд на токен.
    Ответ написан
    7 комментариев
  • Прирост в производительности после переноса алгоритма с Python на C++/C?

    Vindicar
    @Vindicar
    RTFM!
    У тебя вычисление повторяется для каждой строки? Посмотри, можно ли распараллелить код на несколько процессов (именно процессов, не потоков).
    Также посмотри насчёт использования numpy/scipy и их численных солверов для систем уравнений вместо sympy. Может, используя sympy, получится сформулировать алгоритм расчёта, а уже его портировать на numpy?

    Если надумаешь использовать numpy, держи в уме вот что: по возможности выполняй операции сразу над массивами значений. Упрощённо, вот это
    a = numpy.array([3] * 1000000, dtype=numpy.float32)
    b = 2 * a + 3

    будет намного быстрее, чем это:
    a = numpy.array([3] * 1000000, dtype=numpy.float32)
    b = numpy.zeros_like(a)
    for i in range(a.shape[0]):
        b[i] = 2 * a[i] + 3

    Причина простая - операции над массивами реализуют перебор элементов массива нативно, т.е. с той же проивзодительностью, что и C/C++/Fortran. А вот сугубо питоньи циклы - штука медленная.
    Ответ написан
  • Прирост в производительности после переноса алгоритма с Python на C++/C?

    @Everything_is_bad
    Хочется быстрее.
    начни с поиска узких мест и их оптимизации, так же можно попробовать pypy, после этого стоит рассмотреть cython

    Какой ЯП выбрать для изучения
    любой популярный компилируемый

    Во сколько раз ожидать прироста в производительности работы алгоритма
    неизвестно, в активных вычислениях может быть на порядок, но так же всегда можно написать кривую реализацию и только всё замедлить
    Ответ написан
    1 комментарий
  • Как сделать, чтобы бот работал всегда в телеграмме?

    @Everything_is_bad
    Смотрю курс на ютубе по созданию ботов с помощью библиотеки aiogram 2, но у меня самого скачана aiogram 3.
    перестать смотреть протухшие курсы, а еще лучше перестать смотреть курсы на ютубе, новички не способны найти там нормальные
    Ответ написан
    Комментировать
  • Как в Linux найти файлы одинакового размера?

    hint000
    @hint000
    у админа три руки
    Нужно получить список всех файлов с одинаковым размером. Чтобы потом уже вручную удалить дупликаты.
    Вы можете в несколько кликов искать и удалять дубликаты файлов, используя GUI-утилиту под названием FSlint. Находит не просто совпадение размера, а именно совпадение и размера, и содержимого. Имена файлов при этом могут быть разные. Просто добавляете несколько папок, по которым нужно искать дубликаты, потом среди найденных выделяете те, которые хотите удалить и удаляете. Т.е. вручную можно выбирать в какой из папок файл оставить, а в какой удалить. Можно все дубликаты оставить, можно все удалить (!).
    Утилита имеет и другие функции для поиска разных корявостей и неоптимальностей в папках (имена с "плохими" символами, пустые папки и т.д.)

    Есть ещё утилита командной строки fdupes, которая тоже ищет дубликаты.
    Ответ написан
    2 комментария
  • Деление внешнего носителя для файлов и для linux, как это сделать?

    @rPman
    сделать ровно то что ты написал

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

    в зависимости от того какой способ загрузки в биосе выбран и какая разметка диска (mbr и gpt видны и там и там):
    * efi загрузка требует/рекомендует gpt разметка, legacy - mbr
    * если выбрана gpt разметка но legacy режим то потребуется 1мб раздел biosboot
    * если выбран efi режим, то нужен раздел ~100мб efiboot (отформатировать в обычный fat но с пометкой что он efi)
    * если выбран legacy режим загрузки и mbr разметка, то для linux хватит 1 раздела /
    (иногда требуется /boot раздел, обывателю это не нужно, это актуально для нетипичных конфигураций файловых систем)

    Итого 1-2 раздела для linux и 1 раздел ntfs для windows, который прекрасно виден и в windows и в linux, без каких либо настроек.

    Но есть совет, windows начиная с 8.1 версии и по сей день по умолчанию включает hibernate режим и использует его даже когда ты выбираешь обычное выключение компьютера (оно делает logout, закрывая все приложения, и включает гибернацию) - чтобы показывать рекорды моментального включения компьютера. К сожалению в этом режиме файловые системы на флешках и дисках считаются некорректно извлеченными, и в редких случаях работа с таким 'некорректно отключенным' диском из linux (любой другой ОС, тут важен факт гибернации) может привести к повреждению данных

    Поэтому рекомендую отключить гибернацию, если важно постоянно переключаться между ОС.
    Ответ написан
    4 комментария
  • Почему нет установщика пакетов на Ubuntu?

    r1412s
    @r1412s
    А если открыть терминал и выполнить команду: sudo apt install gdebi то потом можно будет на Вашем хроме ПКМ и установить пакет
    Ответ написан
    Комментировать
  • Откуда появляется обложка в MP3-файле?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Конкретно в tg обложка приходит с серверов tg как мета-информация о загруженном файле
    https://core.telegram.org/api/files#downloading-we...
    ищите на странице "cover"

    То есть после того как вы залили файл на сервера tg он проходит обработку и сервер для файла находит обложку. Через какой сервис делается поиск обложки для mp3 - неизвестно.
    Раньше десктопный тг-клиент делал это втупую используя iTunes Search API, теперь tg-сервер делает поиск обложки после загрузки mp3 и отдаёт это как мета-информацию в клиент. Естественно оригинальный файл никак не изменяется и обложка внутрь файла не пишется.
    Если в загруженном mp3 есть файл с обложкой в id3-тегах то будет использоваться он. Поэтому если не устраивает обложка которую находит ТГ - зашейте нужную картинку через id3-теги.

    сам автор песни был в шоке от содержимого

    Да там тупой поиск хоть чего-нибудь по названию трека, автора, альбома из тегов или имени файла. Картинка не всегда может быть корректной.
    Ответ написан
    Комментировать
  • Как скачать целую ветку форума 4pda и скормить нейросети?

    @rPman
    4pda основан на ip.board, все загружается без танцев с бубном, только осторожно, без авторизации получаются другие страницы чуть в ином формате. Вот пример кода на основе simple_html_dom:
    <?php
    include('simple_html_dom.php');
    
    // ссылка на первую страницу темы
    define('START_URL','https://4pda.to/forum/index.php?showtopic=1084129');
    // количество страниц &st= из ссылки » в навигаторе по страницам
    define('PAGES_CNT',580);
    
    @mkdir('data');
    
    for($i=0;$i<=PAGES_CNT;$i+=20)
    {
    	// формируем url
    	$url=START_URL.($i==0?'':'&st='.$i);
    	// имя кеш файла чтобы не загружать повторно
    	$cache_fn='data/'.md5(START_URL).'.'.$i.'.html';
    	if(!file_exists($cache_fn))
    	{
    		// Загружаем страницу
    		$data=file_get_contents($url);
    		// сохраняем страницу в кеше
    		file_put_contents($cache_fn,$data);
    		// пауза между запросами к серверу для защиты его от ddos
    		sleep(1);
    	} else
    	{
    		// читаем из кеша
    		$data=file_get_contents($cache_fn);
    	}
    
    	$html=str_get_html($data);
    	$num=0;
    	foreach($html->find('div[class]:not([class=""]') as $post)
    	{ // перебираем посты в теме
    		// пропускаем первый пост темы, он дублируется на каждой странице
    		if($num++==0) continue;
    		// выводим пост на экран
    		$post_html=$post->find('div.post_body',0)->text();
    		echo $post_html.PHP_EOL;
    	}
    	// вставляем разделитель между постами
    	echo '<hr/>'.PHP_EOL;
    	$html->clear();
    }
    ?>

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

    Страницы можешь вручную указать for($i=0;$i<=PAGES_CNT;$i+=20) вместо 0 - начальный (с шагом 20) и PAGES_CNT конечный пост.

    Вместо текстового представления $post_html=$post->find('div.post_body',0)->text(); можешь сложнее структуру сообщения анализировать, выявляя цитирования и к примеру исключая их из текста (они занимают большую часть всего, дублируя многократно информацию).

    Конкретно этот пример не влезет в контекстное окно бесплатного claude - это 70к токенов. Поэтому дели на куски.
    Ответ написан
    8 комментариев
  • Какие есть инструменты для написания интерфейса для терминала?

    C++

    Rust

    Это из того, что у меня в закладках. Так-то ищите по тэгу TUI (text user interface, в оппозицию к GUI) - и будет вам счастье.
    Ответ написан
    Комментировать
  • Какая модель LLama лучше для использования в telegram?

    @rPman
    Какая? llama3-70b наилучшая из открытых (те что можно запустить у себя), или command r+. Так же хорошие открытые модели основанные на mixtral (mixtral-8x22b). llama3-8b тоже не плохая для своего размера (запустится на 8-16Gb десктопных видеокартах).
    https://chat.lmsys.org/?leaderboard

    Llama это модель, она ничего не может, это файл на диске. Для того чтобы модель работала тебе нужна программа, например с гитхаба официальный пример на python (он очень простой, там буквально 5-10 строчек)

    Не рекомендую прямо в боте telegram вставлять работу с gpt, т.е. это можно и даже будет работать но помятуя что у gpt высокие требования к железу (оперативная память) это будет не эффективно.

    Готовый сервер идет в поставке с llama.cpp (запросы api по http), он же умеет обрабатывать одновременно несколько запросов (по умолчанию 10 одновременных потоков кажется) так же есть возможность самому собирать запросы в пакет и отправлять одним запросом в сервер, он все обработает и вернет, и по скорости это будет быстрее чем каждый по отдельности (особенно когда работа на gpu).

    Программирование ботов gpt - это придумывание запросов на естественном языке, которые дополняются данными от пользователей или еще какими (например обычный запрос в классическую базу, вываливая в промп тупо текстом, к примеру csv форматом). У тебя ограниченное количество ресурсов, маленькое окно контекста (у llama это 8к токенов) и в попытке все туда уместить и приходится что то поверх городить. тупой пример - если ты будешь весь чат пихать в контекст, уже через 20-30 сообщений он переполнится, и нужно будет принимать решение что и как выкидывать.

    А еще llama любит отвечать лишнее, т.е. ты ее просишь ответь числом, а оно отвечает - ваш ответ 3... вот эти 'ваш ответ' нужно как то выявлять. А еще модели лучше работают, если просить их по рассуждать, она тебе даст рассуждения, тебе они нафиг не нужны, как из них результат вычленить? Иногда можно отделить мусор от ответа, попросив его дать в каком то формате, например дай ответ в формате json, а так как запрос к gpt это часть беседы в форме чата, можно дать часть ответа прямо в промпте, например "...assitent: {" тогда у модели не останется варианта как сразу фигачить json.

    Но чем больше ограничений ты даешь модели тем хуже ее качество ответов.

    У llama.cpp есть механизмы задания gramma формата ответа, какие токены предпочтительнее и в каком формате, говорят не идеально реализовано (например не получится задать варианты ответов списком слов типа отвечай только название цвета 'красный', 'зеленый', 'желтый', 'другое',..)
    Ответ написан
    Комментировать
  • Нужна ли нам вся эта безопасность?

    @accountnujen
    Интел, Intel vdt, Intel ppt, от Microsoft, Device Guard и т.д. Вопрос, а нужно ли мне все это?

    маркетологам нужно. вам - нет.
    под предлогом заплатки уязвимости/безопасности можно урезать процентов 30-40% производительности. Этим страдает и intel, и amd. Этакий лёгкий способ заставить юзера купить новое оборудование. Если вы думаете, что избавиться от этого можно лишь установить Windows без этих обновлений, то вы очень сильно ошибаетесь. Все процессорные обновления необратимы. Если взять два старых процессора: один из коробки, а второй из системы после обновления, то они покажут разную производительность на чистой старой системе.

    если грубо говоря, производитель выпускает какой-нибудь tmp и говорит: новая windows работать без него не будет. Хочешь новую - покупай новый ПК. Тоже самое и с другими средствами защиты: хочешь защититься - покупай новый ПК, иначе всё будет лагать.
    Ответ написан
  • Как асинхронно создать QR код?

    Vindicar
    @Vindicar
    RTFM!
    Потому что создание QR-кода - это вычислительная операция, а не операция ввода/вывода. Вычислительные операции не имеет смысла делать асинхронными. Если создание QR-кода занимает у тебя достаточно длительное время, чтобы это было проблемой для остальной программы - засунь этот код в поток через run_in_executor(). Тогда у тебя будет асинхронный future-объект, который можно awaitить как обычно.
    Ответ написан
    4 комментария
  • Что за файлы и как с ними жить дальше?

    Alex_Geer
    @Alex_Geer Автор вопроса
    System Engineer
    Ни кто не хочет писать ответ, напишу сам. В общем через команду file можно убедится что это действительно дампы процесса. Нашел ошибки в логах LibreOffice когда файлы удаляются ранее чем преобразовались в PDF, процесс зависает и система его убивает. Возможно эта информация будет кому то полезна.
    Ответ написан
    1 комментарий
  • Почему в наутилусе папка распаковывается за 1 секунду, а в Windows 1 минуту?

    Потому что в винде zip очень древний и неоптимизированный.
    Лучше использовать winrar или 7zip для распаковки - тогда тоже будет быстро.
    Ответ написан
  • Какие модули есть в Python для целей анализа, форматирования, вывода текста?

    @shut0vby
    python, js, html&css
    Привет. Советую глянуть библиотеку ReportLab, создаёт pdf на основе данных, возможно это то что тебе нужно. Для поиска совпадений слов, знаков препинаний: модули re, collenctions, как-то так
    Ответ написан
    1 комментарий
  • Какую книгу порекомендуете для изучения auditd Linux?

    r1412s
    @r1412s
    Если люди будут писать книги на каждую утилиту сисадмина то не знаю...
    Есть man auditd,есть статейки неплохие https://habr.com/ru/articles/553036/
    Ответ написан
    Комментировать
  • Виндовс бут менеджер стоит на одном диске, а сама винда на другом?

    @rPman
    Да, такое возможно.
    Самое простое - восстановить загрузчик с помощью загрузочного установочного диска windows (его версия и битность должны совпадать с установленной), выбрать восстановление -> командная строка... советую погуглить как восстановить загрузчик, инструкций вагон. Вам понадобится дополнительный раздел, примерно 200мб.

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