Задать вопрос
  • Программы занимают ОЗУ от силы 8 Gb, а пишет, что занято 16 Gb, как это возможно?

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

    Так же информация об использованной памяти в windows (да и в любых других ос) сложны для интерпретации и буквально показывают неверную (из-за того что используется разделяемая память)
    Ответ написан
    Комментировать
  • Какую БД использовать в телеграм боте на хостинг сервисе?

    @rPman
    sqlite проще, нагрузки у telegram ботов очень низкие поэтому этого будет достаточно. Бонусы - простота администрирования, памяти sqlite требует значительно меньше чем mysql сервер
    Ответ написан
    Комментировать
  • Необходима библиотека для распознавание текста с документа на PHP?

    @rPman
    открытый бесплатный готовый к использованию - tesseract
    недостаток, если документ не распознается, то нужно будет тюнить его шрифты

    на английский язык и некоторые другие языки есть современные языковые OCR модели, гуглить на huggingface.co ocr multilang, на русский я не нашел. Но куча готового софта, подбираешь датасет, обучаешь,...
    Ответ написан
    2 комментария
  • Как узнать количество разъемов у БП?

    @rPman
    Не мудрено что менеджеры ошибаются, ведь на офф сайте информация не указана (только картинки)
    https://www.corsair.com/ru/ru/p/psu/cp-9020188-eu/...
    Для второго указана
    https://www.corsair.com/ru/ru/p/psu/cp-9020200-eu/...
    Ответ написан
    Комментировать
  • Как научить нейронку выигрывать в моей Phaser.js игре?

    @rPman
    Если RL для тебя сложно, используй менее эффективный но очень простой подход - генетический алгоритм.
    Это очень тупой и простой для реализации подход, ты реализуешь свою игру в виде метода (ты его всеравно должен бы сделать для RL), с помощью которого ты будешь тестировать своего бота:
    * независящего от реального времени (т.е. внутренний таймер есть но игра проходит максимально быстро в реальном времени без пауз)
    * фиксированным сидом для случайных событий (т.е. повторный запуск с теми же параметрами должен выдать тот же результат)
    * пропускающего вывод графики
    * на вход которого подается твой алгоритм управления (не важно чем он будет, главное чтобы он однозначно описывался какими то числами), т.е. управлением занимается метод который ты передашь в вызове
    * на выход этот метод выдавал бы давал оценку, на сколько хорошо выбранный алгоритм прошел игру (0 - умер, и плюс число за звезду)
    * добавляешь в этот метод лимит по внутреннему времени (т.е. чтобы - возвращало за невыполнение задания, в твоем случае это не собрал звезды)
    * можно привязать оценку ко времени, например разделить собранные звезды на затраченное время (добавь какой-нибудь коэффициент влияния времени на итог).

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

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

    Задача будет решена, но времени (вычислительных ресурсов) для этого может потребоваться очень много.

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

    @rPman
    Измени подход к разработке, к имени скрипта добавляй версию, время последнего изменения или хешсумму например так main.js?3a7b (все веб сервера корректно это обрабатывают со статикой)

    Делать это лучше простым скриптом, который запускать каждый раз перед тестами и при публикации релиза, так как эта проблема с кешем вылезет там ещё больнее
    Ответ написан
    Комментировать
  • Как правильно отрезать часть строки?

    @rPman
    тут два подхода

    Первый, считаем количество точек, до символа 'не точка', либо
    удалить начало строки до первого пробела
    считаем количество символов до пробела.
    Затем простым substr вырезаем строку с найденной позиции.

    Второй способ, написать регулярное выражение (промышленный стандарт по работе со строками, просто но часто избыточно по ресурсам) которое выделит нужную строчку, и посмотреть ее размер или сразу вызвать что то типа string.replace(/регулярное выражение/,'')

    в регулярном выражении символ начала строки - ^, повторение символа + после этого символа, точка и плюс в регулярных выражениях зарезервирована, значит нужно добавить \ перед ними, типа так: /^\+\.+/

    Если количество точек может быть нулевым (т.е. плюс и сразу пробел) значит вместо + использовать *
    Ответ написан
    Комментировать
  • Почему не работает 3 слот оперативной памяти?

    @rPman
    https://dlcdnets.asus.com/pub/ASUS/mb/SocketAM4/PR...
    Смотрим наличие твоей памяти в списке поддерживаемых, внимательно смотрим галочку в колонке 4dimm и понимаем что все четыре планки на высоких частотах это редкость.

    Понижай частоту до 2666, в этом режиме почти все работает, таймингами крути, они важнее частоты Необходимо минимизировать (Тайминг / Частота)
    Ответ написан
    Комментировать
  • Как предотвратить появление битых файлов?

    @rPman
    Переназначенные сектора raw значение 0, значит по smart диск здоровый и высокая вероятность что проблемы с данными - логические.

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

    Именно этим они достигли такой высокой скорости запуска системы.

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

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

    Решается отключением файла гибернации (как результат медленное включение windows) командой в cmd.exe под правами администратора:
    powercfg.exe /hibernate off
    После можно файл hiberfil.sys удалить вручную

    p.s. логические ошибки файловой системы коварная штука, могут годами быть в файловой системе и не мешать (полный чекдиск не запускается сам) но зато потом так 'выстрелит', мало не покажется.
    Очень большие шансы что у тебя именно это и случилось
    Ответ написан
    3 комментария
  • Сильно ли тяжело для базы данных innoDB 1 500 таблиц?

    @rPman
    Полторы тысячи таблиц для innodb это мало и дополнительной нагрузки это не создаст (помню были какие то заморочки с myisam уже при количестве таблиц больше 100).

    'очень частые' у разных людей разное значение, для кого то 1 раз в секунду - уже нереальная нагрузка, а кому то нужно 10к запросов в секунду обработать. Так вот во втором случае оптимизация будет требоваться уже на ином уровне и возможно 1500 таблиц станет заметно нагружать базу.

    Задача не ясна, рекомендации невозможно дать.
    Ответ написан
    1 комментарий
  • Как создать одну виртуальную машину использующую несколько серверов?

    @rPman
    Виртуализация не позволяет объединять мощности!

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

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

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

    @rPman
    99% работы тут анализ текстов, а уж интеграция с telegram дело десятое.

    ДО публикации весов llama, я бы предложил изучить технологии вокруг LLM (большие языковые модели), RLHF (Reinforced Learning from Human Feedback - это если с конца заходить, лучшее что там есть), рекомендую видео Igor Kotenkov посмотреть, он как раз с сумаризации текстов зашел, рассказывая о существующих алгоритмах и способах их оценки.

    Теперь же все это практически не нужно, достаточно взять готовую языковую модель со свойствами ИИ (например open assistent 30B) и поэкспериментировав с промптами, прогонять через нее статьи, разделяя их на абзацы (если размер их с промптом превышает 2к токенов, это примерно 1.5к слов).

    Скорее всего у тебя будет несколько запросов на одну и ту же статью, с разными вопросами (особенно когда длины контекста хватает в притык, а значит пытаться вести общение в пределах контекста будет сложно, т.е. статья+запрос1+ответ+запрос2+ответ+...). У llama.cpp в библиотеках есть возможность сохранять контекст и моментально загружать его (в т.ч. mmap) для как бы моментального продолжения беседы с сохраненного места, в т.ч. к примеру так - формируешь промпт таким образом, чтобы текст статьи был в начале, а вопрос в конце, затем сохраняешь состояние сети и последовательно загружаяя его раз за разом, подставляешь с новыми вопросами, таким образом тратить ресурсы будешь только на эти вопросы, пример в save-load-state.cpp.
    spoiler
    После того как поиграешь с gpt4, модель от фейсбука конечно туповата, но посмотрев на стоимость первой, понимаешь, что с этим можно жить. Есть лайвхаки, как улучшить качество ответа от сети, дай возможность сети по рассуждать, универсальная палочка выручалочка let's think step by step в разных формулировках, дает возможность ИИ проанализировать в процессе генерации ответа тему, а потом следующим вопросом проси суммаризировать итоги... это активирует в т.ч. One/MultiShot техники, когда предварительными наводящими обсуждениями настроить модель на лучший результат, и автоматизирует процесс, когда не нужно гадать над примерами.

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

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

    @rPman
    Посмотри внимательно на свою видеокарту, нет ли на ней DVI-i выхода? так как существуют пассивные переходники (с ценами 100р) на dvi (причем тебе подойдет любой dvi-i или dvi-d) в любую сторону, включая просто кабели, практически все видеокарты прошлых лет имели три или больше видеовыхода, правда это были div + dsub/dvi + hdmi + опционально display port

    Абсолютно все видеокарты на рынке сейчас pci-e и подойдут к твоей материнке, но осторожно с блоком питания (за твой бюджет ты наврят ли выйдешь за то что уже имеешь).

    За 20т.р. можно подобрать rtx3050 8гб vram (в dns в регионах 23т.р.) или 1650super 192bit 6gb vram /2060 и т.п., настоятельно рекомендую выбирать железки с vram >6гб и nvidia (за эту опцию придется переплатить 10-15% при равной производительности).

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

    Почему nvidia? потому что при наличии vram >6гб позволяет играться с нейронными сетями, например stable diffusion, при наличии 8+ vram можно генерировать к примеру видео, при наличии 24+vram можно играть с младшими языковыми моделями и т.п.
    Ответ написан
    3 комментария
  • Почему в Google Chrome отсутствует пункт Сохранить картинку как?

    @rPman
    Пальцем в небо.

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

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

    p.s. чтобы разобраться, правая кнопка (если не дает то с нажатым shift) и запустить инспектор и разбираться, что там мешает
    Ответ написан
    Комментировать
  • Как подобрать начальные входные весовые коэффициенты (веса) для нейронной сети?

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

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

    Отличный пример, нейронную сеть, обрабатывающую изображения, можно предварительно пропустить через попытку обучить простую нейронную сеть, на вход и выход которой подаются одни и те же данные - изображение, но размерность одного из внутренних слоев заметно ниже входа, т.е. попытка заставить нейронную сеть рисовать по исходному изображению то же самое, но описывая это изображение вектором меньшей размерности, пример такой топологии - бутылочное горлышко.
    spoiler
    lir-_pezkp2bcrdvp9bvwoomcvs.png
    Т.е. в данном случае такую сеть обучить будет проще чем под вашу задачу (и данные для нее проще собрать, ведь не нужно искать смысл в них, только закономерности), так вот первые слои этой предварительной нейронной сети можно в последствии скопировать в целевую нейронную сеть, дозаполнив остальные веса случайными значениями.
    Ответ написан
    Комментировать
  • Поддержка RAID SSD TRIM?

    @rPman
    Можно забить на trim. Серверные ssd не должны будут так сразу помереть из-за этого. trim вообще это как бы дополнительный бонус к сроку жизни, это дешевые ssd (декстопные с корвым контроллером и емкостью подо все чипы памяти, т.е. к примеру не 240гб а 256гб - 2^x) без резерва по памяти могут от такого опрокинуться еще до окончания гарантийного срока.

    Как вариант, удостоверься что trim работает в прямом режиме (без raid) и используй софтварный, на сколько я знаю mdadm поддерживает trim, так же его поддерживают такие файловые системы как btrfs/zfs (про zfs советую поискать отдельно, btrfs точно поддерживает).

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

    @rPman
    Вопрос на самом деле не простой, речь не о программировании а об идеологии.
    У тебя два варианта - твое приложение реализует собственно браузер (примерно так работает electron приложения) либо какими то способами скрывается основное (в твоем случае консольное) окно приложения.

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

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

    На python можно запустить любое приложение сокрытым, т.е. твое приложение запускает само себя с определенным ключом (и первый экземпляр завершает работу), чтобы исключить зацикливание, следующим образом:
    https://stackoverflow.com/questions/2319838/open-a...

    upd. погугли pythonw.exe и .pyw extention, такой тип приложений будет запускаться без консоли но как я понял это очень устаревший подход и может не поддерживаться.
    Ответ написан
    Комментировать
  • Как в linux-е получить полноценный flash-плеер, желательно в firefox?

    @rPman
    Попробуй https://ruffle.rs/ их эмулятор в браузере использует web archive в попытке запускать сохраненный архив флеш-наследия 200x-ых
    Ответ написан
    Комментировать
  • Как бюджетно собрать минисервер для ml?

    @rPman
    Не гадай - считай.

    Берешь размер моделей, которые тебя интересуют, умножаешь на 4 (размер моделей в весах, каждый вес это 2-4 байта, сильно зависит от алгоритма, и часто есть оверхед по требованиям) - и тогда ты сможешь делать обучение (не только finutuning но делать с нуля свою модель). Для просто использования можно пользоваться квантизацией, уменьшающей потребление памяти в разы (8bit - 1байт на вес, 4bit - пол байта на вес).

    Если в оперативную память видеокарты влезут еще и обучающие данные - это будет win-win, если будет можно сразу несколько моделей там продублировать - как я понимаю чуть ли ни линейный прирост к обучению (ну может в квадратный корень из количества).

    Потребительские видеокарты быстрее современного процессорного железа в задачах ML - в лучшем случае в 10 раз, точно читал что при использовании хороших интел процессоров (инструкции avx512...) можно добавить прироста в тех же llm чуть ли не 2х..3х, но придется сильно ковыряться с софтом, по простому там начинаются конфликты версий (у меня не получилось по простому собрать transformer чтобы использовать ускорения просто intel avx2, есть готовые докер образы от интел но внутри другие проблемы лезли), но почти наверняка в простых ситуациях все будет хорошо.

    Для finetuning потребительские видеокарты вполне подходят, народ арендуют железо на vast.ai и вроде бы довольны.

    Итого, если твое время не слишком высоко стоит (т.е. ты готов вместо нескольких часов обучения тратить недели) то тебе хватит и процессора (не скупись на процессор, а вот оперативную память не обязательно брать топовую), особенно если альтернатива тратить 100х больше денег (не шучу) на a100 80GB железки и получать да может 20х прирост к скорости, но стоит ли?

    И наоборот, если тебе не надо крутить модели сложнее 1b-5b, то почему бы и не задействовать для этого GPU. Но для ML подходят пока только nvidia (в этом мире правит тот, подо что есть эффективный софт, amd тут догоняющие, причем в 2-3 раза хуже)

    p.s. точно есть fpga железки, например в слот ddr3, в теории их можно использовать для и вычислений, но вот лучше-хуже это будет я не смог понять, надо покупать и тестировать.
    Ответ написан
    Комментировать