Задать вопрос
  • Как восстановить данные с мёртвого hdd?

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

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

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

    найди сервис онлайн и отправь диск почтой.
    Ответ написан
    Комментировать
  • Как организовать поиск в БД с 1000 таблиц?

    @rPman
    То что базу надо правильно проектировать уже сказали.

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

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

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

    Таблица может иметь вид: tablename, columnname, id, value (если это критично, вместо одного текстового поля value можно заводить по одному на каждый тип или представление данных, в форме, по которой проводится поиск), при заполнении, индексов у этой таблицы быть не должно, в этом случае заполнение будет максимально оперативным (особенно если ее физическое размещение будет на другом носителе, смотри как в твоей базе данных создавать таблеспейсы или иные методы), допускается использование другой базы данных, в каком то смысле это даже более оправдано. Пустые значения (null и под задачу '' и может даже 0) можно сюда не добавлять, если поиск таких значений не актуален. Так же можно пропускать какие то таблицы, поля и даже записи по каким то критериям, если они могут быть не важны для анализа (например фильтрация по дате).

    После заполнения в таблицу нужно добавить индексы по value, и опционально по columnname/tablename. Теперь простой запрос select * from эта_cache_table where value=? даст максимально быстро результат.

    p.s. если речь идет о простом анализе данных в базе, например изучение структуры человеком, который разбирается в sql, можно очень простым способом сделать sql дамп всей базы и искать нужные значения простым поиском по строке (осторожно, в зависимости от базы данных, символы в строках могут экранироваться различными способами), так же можно поэкспериментировать с разными методами экспорта данных (например почти все базы имеют утилиты экспорта в csv)
    Ответ написан
    3 комментария
  • Как постоянно получать данные с БД?

    @rPman
    Использовать базу данных как источник событий - плохая идея, т.е. это возможно, разные базы данных предлагают для этого разные инструменты, типа sqlite notifications, postgres notify, у mysql точно видел как мониторили изменения читая binary logs напрямую, в любом случае это извращения.

    У тебя уже должен быть процесс, обслуживающий websocket и обрабатывающий все действия клиентов, пусть этот процесс и делает необходимые манипуляции на приходящие события либо отправляет сообщения по другим каналам. Т.е. база данных это только место для данных, человек отправил сообщение, бакэнд это сообщение обработал, положил данные в базу данных и дернул метод/послал сообщение что в базе появилось сообщение с таким id (или как тебе удобно), вторая часть бакэнда это сообщение получает, читает данные из базы и обрабатывает дальше (лично я считаю разделять на разные процессы это бессмысленно но мало ли какая у тебя задача)
    Ответ написан
    Комментировать
  • Как запустить свой профиль firefox selenium?

    @rPman
    options.add_argument('-P имя_профиля');
    так же попробуй --profile путь_до_профиля

    профиль создать нужно заранее
    Ответ написан
    1 комментарий
  • Интересный вопрос знатокам парсинга, парсили ли вы гугл тревел?

    @rPman
    да
    два противоположных метода решения задачи парсинга и автоматизации веб приложений:
    1. реверсинженеринг кода веб приложения, выявление структуры и порядок вызова запросов к серверу, и их вызов
    - много сил на реверсинженеринг, сложная поддержка
    + требует мало ресурсов для работы (считанные килобайты ram, т.е. можно запустить 100500 ботов)
    2. запуск браузера или его симулятора и симуляция действий пользователя
    + почти не требует сил на реверсинженеринг, все доступно прямо из браузера и его developer console, простая поддержка
    - требует много ресурсов для работы (сотни мегабайт ram на запуск одного инстанса и нагружает cpu)
    все остальные методы находятся между этими двумя противоположными.

    чтобы кликнуть на кнопку во втором методе требуется 15 секунд на выявление css selector нужного элемента и написание кода document.querySelector('...').click() (это не selenium, а инжект javascript кода на страницу с помощью tempermonkey), да понадобится еще чуть чуть кода на организацию порядка действий, проверку страницы по наличию элементов (например выявить конец пагинации) но это все несоизмеримо проще чем реверсить код сайта чтобы понять как получить куку авторизации из обфусцированного кода (когда владельцы сайтов защищаются от этого) и вычисление таймингов и порядок загрузки элементов страниц (которых может быть несколько) чтобы добраться до нужной... да конечно не все так защищаются, а многие даже с javascript не заморачиваются и фигачат сайты по старинке с server generated страницами, там тогда все тоже не сложно, но для понимания этого исследование провести придется.
    Ответ написан
    5 комментариев
  • Как в Битрикс реализовать AI поиск по фото?

    @rPman
    Задача получения текстового описания по картинке CLIP (что то типа обратная stable diffusion):

    https://github.com/mlfoundations/open_clip
    https://huggingface.co/laion/CLIP-ViT-H-14-laion2B...

    гуглить сразу CLIP image classification, тьма моделей начиная с openai, разбираться долго

    p.s. еще про анализ объектов на изображении начни копать от сюда или лучше segment-anything фейсбук много чего выкладывает

    Соответственно после запилить интерфейс и интеграцию в битрикс
    Ответ написан
    1 комментарий
  • (вопрос от полного чайника) Как писать код, который будет работать с внешним сайтом?

    @rPman
    У тебя тут сразу несколько технологий и задач, достаточно сложных и сильно друг от друга отличающихся:
    1. сбор данных с сайта
    целая вселенная - это и реверсинженеринг сайта, и борьба против автоматизированных сборщиков (в зависимости от того как заморочился с этим владелец сайта)
    Настоятельно рекомендую сразу работать с сайтом из браузера, техник много, от простого открытия сайта в обычном браузере с инжектом твоего javascript (например расширение tempermonkey), который будет ходить по сайту, до запуска безголового браузера и управление им из своей программы с помощью selenium, а там кликать кнопки и собирать данные, отправляя их тебе на сервер или сохраняя в локальной базе браузера - localStorage/indexeddb/...
    2. обработка данных
    тесно связана со сбором, данные нужно не просто собрать но и привести к машиночитаемому виду (бывают ситуации когда данные создаются людьми без определенного формата, в этом случае совсем туго), так же это тесно перекликается с технологиями борьбы владельцев сайтов с автоматическими собирателями данных
    Совет, вместе с текстовыми данными собирай информацию о расположении, гораздо проще догадываться о назначении данных, если знаешь их относительную позицию.
    3. анализ данных и поиск закономерностей плюс визуализация
    это не только нейронные сети, алгоритмов тьма, разбираться хотя бы на уровне что это и в каких ситуациях применять, придется... и самое главное результата может и не получиться но узнаешь ты только потом
    работа творческая, и готовых решений скорее всего нет (хотя спасибо, за последние лет 10 собран такой пласт библиотек для работы, один tenserflow и torch чего стоит. Загляни на weka, это огромный сет библиотек и алгоритмов (java) как источник информации об этих алгоритмах
    Ответ написан
    1 комментарий
  • Можно ли в PHP из дочернего процесса создавать еще дочерние процессы?

    @rPman
    php прекрасно создает процессы как с помощью popen так и с помощью exec/passthru, запуская како-нибйдь nohup или просто указывая в конце команды &, а еще есть расширение parallel
    Ответ написан
    7 комментариев
  • Как воспользоваться LLamaSharp?

    @rPman
    Оригинальные веса llama были выложены кажется на github
    magnet:?xt=urn:btih:ZXXDAUWYLRUXXBHUYEMS6Q5CE5WA3LVA&dn=LLaMA

    получаешь что то типа
    7B/checklist.chk
    7B/params.json
    7B/consolidated.00.pth
    13B/...
    ...
    tokenizer_checklist.chk
    tokenizer.model

    тебе нужны все tokenizer* файлы в корне и один из каталогов, соответствующий размеру модели (7B и 13B не знают русского и слабоваты)

    Этот c# проект - это биндинг к оригинальному проекту llama.cpp, там есть python скрипт convert.py (зависимости ставь сам, недостаточно requirements.txt нужен еще pytorch и еще что то, сам разберешься, в windows я не помогу) для конвертации из huggingface формата в суперэффективный ggml (этот формат постоянно меняется, где то раз в месяц, поэтому бессмысленно качать готовые, так как они будут привязаны к конкретной версии llama.cpp), его главная фича - mmap, веса не грузятся в память приложения а остаются в файловом кеше ОС, т.е. повторный запуск приложения моментальный.

    Будь готов к нескольким конвертациям, модели большие, особенно 65B, на диске тебе потребуется как минимум один раз хранить f16 версию (2 байта на вес, т.е. 130Gb для 65B модели) после его можно (но не обязательно) сконвертировать в формат с квантизацией (на вес будет требоваться к примеру 4 бита или 8), это значительно ускоряет работу ценой незначительного ухудшения качества.

    python convert.py --outtype f16 --outfile llama-7b-q4_0.ggml /torrents/LLaMA/7B
    вместо f16 можешь поставить f32, требования к памяти взлетят до 4 байт на вес но в теории это может быть тоже быстро (если критично, проведи бенчмарки), мои тесты показывают что f16 медленнее q4_0

    Опционально можешь провести квантизацию:
    ./quantize llama-7b-f16.ggml llama-7b-q4_0.ggml 2
    тут 2 это тип квантизации
    usage: ./quantize model-f32.bin [model-quant.bin] type [nthreads]
      type = "q4_0" or 2
      type = "q4_1" or 3
      type = "q5_0" or 8
      type = "q5_1" or 9
      type = "q8_0" or 7
    Очевидно что q4_... потребуют половину байта на вес (требования к 64b модели будут примерно 42+5GB ram), разница версий квантизации в скорости и качестве (q4_0 быстрее и чуть хуже q4_1 но я уверен что без синтетических тестов эту разницу на практике не заметишь даже между q16 и q4, она там единицы процентов, но вот скорость значительно отличается).

    Для работы llama.cpp нужен один файл .ggml (внутри и веса и токенизер) его и пиши в путь до модели.

    Поэкспериментируй с количеством threads в настройках, их нужно писать меньше чем позволяет процессор (тем более с гипертреадингом), так же я хз как у него с поддержкой gpu, она появилась относительно недавно, оптимизация по какому то одному конкретному тяжелому расчету.
    Ответ написан
    Комментировать
  • Есть 2USB mini USB кабель с дополнительным питанием, Вопрос, если на второй кабель подать Ипулсное напряжение 5 Вольт, не сгорит?

    @rPman
    может стать плохо и материнской плате
    настоятельно не рекомендуется так делать

    но если что, как минимум нужно объеденить земли блоков питания
    Ответ написан
    1 комментарий
  • Не получается использовать метод toFixed() в javascript на значение массива, как это сделать?

    @rPman
    там строка а не число, преобразуй ее в число с помощью parseFloat сначала (и по уму проверить на ошибки)
    Ответ написан
    1 комментарий
  • Как создать скрипт, который заходит на сайт и нажимает на кнопку каждый час?

    @rPman
    Для тех кому очень сложно программировать но есть минимальное понимание этого можно использовать плагин tempermonkey который инжектит пользовательский скрипт на сайт по ссылке или ее маске, а там нужна пара строчка вида:
    document.querySelector('css selector').click(); // кликнуть на кнопку
    setTimeout(()=>window.close(),3000); // закрыть окно через 3000 миллисекунд

    css selector определяется тупым копированием (в большинстве случаев) из инспектора (правая кнопка на элементе, инспектировать, правая кнопка на элементе в инспекторе, копировать как...)

    теперь достаточно раз в час (например через планировщик задач) запускать браузер с нужной ссылкой, он будет открываться, жать нужную кнопку и завершать работу, автоматически, в параметрах можно указать выделенный профиль, тогда браузер будет запускаться, не затрагивая уже запущенный под основным профилем, а так же указать чтобы он запускался минимизированным
    Ответ написан
    Комментировать
  • Можно ли обучать нейросеть на базе книг?

    @rPman
    Можно взять уже обученную языковую модель (из открытых лучшие это bloomz и фейсбуковский opt, из нелегальных но кардинально лучших - llama, ну а чужие платные - chatgpt4 api, не уверен что там открыли доступ на дообучение) и дообучнить (finetune).
    Оцени модели на самом сложном бенчмарке MMLU, opt66b - 35, bloom175b - 39, llama65b - 68, gpt35 - 70, gpt4 - 86

    Есть набор алгоритмов peft, с помощью которого можно тюнить очень большие модели на слабом железе и небольшом количестве данных.

    Такие модели как llama и chatgpt4 можно использовать как обычного человека, буквально, предоставляя ему текст и задавая вопросы (текст+запрос+ответ+запрос... не должны превышать размер контекста, для llama это 2к токенов, для chatgpt - 4к или 8к). Если нужно перед вопросами залить в модель большой объем данных то используют дообучение. Внимание, это ломает модель, она запоминает обучаемые данные но начинает забывать области знаний, которых не было в дообучающей выборке, с этим борются в т.ч. подмешивая в нее данные из стартового датасета, на котором обучалась изначальная модель. Процент данных - вопрос экспериментальный, я не нашел (точнее статьи есть но их надо читать изучать, их много) примеров.

    свойство это катастрофическое забывание
    Ответ написан
  • Как улучшить качество микрофона?

    @rPman
    Гугл сделали очень много ограничений, чтобы приложения на android не имели доступа к радиомодулю, даже для простой записи телефонного разговора нужен root доступ и использование особенностей конкретного производителя (т.е. не для каждого это еще и сработает), а уж модификация звука в канале как я понимаю и подавно напрямую не разрешена.

    В теории можно что то придумать при использовании bluetooth гарнитуры, при наличии root, можно пользоваться pulseaudio (первая же гугл статья для просто linux) но очевидно будет не просто
    Ответ написан
  • Как обработать ssh-вывод построчно с помощью Python?

    @rPman
    Не очень эффективный путь но простой - запускаешь ssh xxx@yyy cat /path/log/file > temp_file ждешь окончания и читаешь полученный файл temp_file. тут cat это программа на сервере, выводит в stdout содержимое файла, но можно прямо на сервере часть обработки запускать используя grep/sed/awk/..

    сложнее, берешь какой-нибудь модуль для работы с ssh или scp для python, я не пробовал но гуглится много, например, и работаешь с выводом ssh напрямую.

    Так же можно попробовать вызывая subprocess подключаться к потокам и обрабатывать вывод, не сохраняя (я так делал на php, есть подводные камни на windows машинах, если не wsl), вроде гуглится что не всегда все работает как хочется, но если просто подключиться и об
    Ответ написан
    Комментировать
  • Почему в некоторых мониторах 144 Гц?

    @rPman
    https://hi-news.ru/computers/pochemu-igrovye-monit...
    144 — это 24 умноженное на 6. Все текущие герцовки дисплеев делятся на 24: 120 Гц, 144 Гц, 240 Гц, 360 Гц.
    Ответ написан
    7 комментариев
  • Существует ли модель, обратная Stable Diffusion?

    @rPman
    https://github.com/mlfoundations/open_clip
    https://huggingface.co/laion/CLIP-ViT-H-14-laion2B...

    лучше гуглить сразу CLIP image classification, тьма моделей начиная с openai, разбираться долго

    p.s. еще про анализ объектов на изображении лучше начни копать от сюда или лучше segment-anything фейсбук много чего выкладывает
    Ответ написан
    Комментировать
  • Как при помощи yt-dlp скачать видео в оригинальном разрешении, ориентируясь на дату-время видео?

    @rPman
    yt-dlp -f xxx https://yyy --get-url
    полученную ссылку читаешь только заголовки
    curl -L -I http://zzzz | grep Last-Modified:
    там будет несколько редиректов, дата последнего скорее всего искомая
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
      0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
      0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
      0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
      0 3545k    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
    Last-Modified: Wed, 02 May 2007 10:26:10 GMT
    Last-Modified: Wed, 02 May 2007 10:26:10 GMT
    Last-Modified: Wed, 02 May 2007 10:26:10 GMT
    Last-Modified: Fri, 03 Feb 2023 04:08:16 GMT

    как минимум для разных форматов она разная
    Ответ написан
    2 комментария
  • Что делать при зависании установки вин 10?

    @rPman
    Отключи интернет

    Попробуй перед апгрейдом сначала установить все обновления
    Так же неплохим вариантом может быть промежуточный апгрейд до 8, в которую для скорости интегрируй обновления с помощью ntlite
    Ответ написан
  • Какую нейросети актуальны в 2023 году для работы с русским языком?

    @rPman
    c открытой лицензией

    могла отвечать на вопросы

    из самых крупных открытых мультимодальных языковых моделей (именно они проявили способности близкие к интеллекту), что мне известна, это bloom, размер в 13b даже можно на потребительском железе запустить (следующий размер 170B и для его запуска придется городить кластер с десятками секунд на токен) и ее качество в разы (десятки процентов) ниже llama, а у llama хуже chatgpt35 (да на считанные проценты), и тут такое дело что каждый следующий процент - это почти вселенная. Этой моделью я не игрался, но как я понял она лучшая из открытых мультимодальных (бери с префиксом -mt, они мультиязычные).

    Еще есть facebook/opt

    Оцени модели на самом сложном бенчмарке MMLU, opt66b - 35, bloom175b - 39, llama65b - 68, gpt35 - 70, gpt4 - 86

    Настоятельно рекомендую освоить prompt/p-tuning, lora finetuning и т.п. (например peft) под свою задачу, именно таким образом у модели повышают качество работы на десяток другой процентов (сам я еще не дошел до практического применения, только изучаю). На худой конец используй OneShot/MultiShot (когда к запросу спереди добавляется один или несколько примеров вопрос-ответ, что сильно улучшает ответ но увеличивает нагрузку так как запрос увеличивается кратно).
    spoiler
    Само собой llama - лучшее из доступных решений, но не легальное. Бери минимум 30B лучше 65b, можешь взять оттененную версию от OpenAssistent, 8bit или 4bit quantization вполне себе здраво работает на процессоре с помощью llama.cpp, причем на столько что юзабилити его выше чем штатный питоновский код от huggingface, который мало того что заточен под серверные видеокарты, так еще и не оптимизирован (чего стоит чтение файла с моделью в кеш ОС вместо постоянной загрузки копированием, утилита запускается моментально и не нужно городить сервер с api как это надо в случае с питоном). 6-ядерный i5 12600 пережевывает например 1784b русский текст, а точнее 1981b запрос определить категорию - 239 сек (616.46 ms per token) + ответ в 31токен 32 сек (1055.86 ms per run), требуя для работы 47gb ram

    Что лучше openassistent или оригинальная llama сказать сложно, ассистент затюнен на вопрос ответ, т.е. как инструмент общения он предпочтителен, а у llama больше мусора в ответе, но у меня есть ощущение что finetuning ломает модель, я почти уверен что если ее прогнать по тестам, по которым прогоняли llama, значения будут хуже.
    Ответ написан
    4 комментария