Задать вопрос
  • Внедрение 1с-коннект в свою сеть чужой организацией. Минусы?

    FerroPanda
    @FerroPanda
    Мой семилетний опыт работы с поделкой 1С-коннект.
    1. Вы видите всех, все видят вас. Не в смысле все ваши клиенты, а в смысле все клиенты, которые существуют в коннекте в принципе. Что вас отделяет от них? В первую очередь интеллект пользователя, но уже на этом можно остановиться, потому что очень ненадёжный фильтр.
    2. Косяки обновлений. В моей организации 50++ пользователей. Каждый месяц некоторые из них отваливаются. Начинаешь играть в угадайку как подключиться. Выясняется - не стало обновление. Причём пользователи абсолютно разные отваливаются. Самый счастливый период был при переходе с 4-й версии на 5-ю, потому что на 4-ю перестали приходить обновления и за этот период не было ни одной жалобы клиентов. Сейчас только 5-я ... всё стало как раньше.
    3. Список контактов. Это отдельный ужас. 5-ой версии уже более двух лет. В принципе отсутствует сортировка контактов. Т.е. разделить пользователь в сети или нет - невозможно, отсортировать пользователей по алфавиту - невозможно. Т.е. просто существует мусорка с контактами, которая постоянно случайным образом перемешивается. В 4-ой было по-другому, но она уже не существует. Формат списка контактов - раньше помещалось на экране 40 контактов, теперь 15. Добавлено в описание контактов куча мусора, которые невозможно отключить.
    4. Техподдержка. Типичная современная корпоративная этика. Если они облажались, то никогда этого не признают и не дадут прямого ответа. С вас будут трусить логи, тикеты, завалят ссылками на какие-то информационные сообщения и т.п. Но прямого ответа вы никогда не получите. Вы можете писать какие-то просьбы и вам дадут номер обращения, но они никогда не будут выполнены. У меня куча таких обращений, самому старшему лет 6, но его так и не выполнили. Самым младшим года два - это сразу как попробовал 5-ю версию, ужаснулся и вернулся на 4-ю. Написал, что не понравилось. За два года ничего не изменилось. Отдел разработки либо не получает подобную информацию от пользователей, либо сразу отправляет её в мусорку ... тут на ваше усмотрение как про это думать, но результат одинаковый.
    5. Отсутствие облегчённой версии. Сам коннект это жирная неповоротливая корова с кучей лишнего функционала. Если у вас слабенький ПК и нужен только удалённый доступ с чатом, то это не ваш вариант. Либо тащите за собой всю эту корпоративную ботву на 300 метров, которая будет стартовать по 2-3 минуты. Тот же Амик весит 1 Мб, стартует мгновенно и быстро работает на любом ПК, но к сожалению у него нет чата и удобного списка подключений. Неужели такой функционал тянет за собой 299 метров? О_о
    Итого - если вам скучно и хочется как-то себя взбодрить, то можете связаться с коннектом. Я же для себя активно ищу альтернативы, но как обычно всё упирается в деньги и руководство.
    P.S. В последнее время у меня очень сильно пригорело от пользования 1С-коннектом, поэтому этот отзыв о нём вы можете встретить где-то ещё ... может так что-то изменится.
    Ответ написан
    Комментировать
  • Как тренировать нейронную сеть, если размер модели больше, чем имеющийся объём памяти устройства?

    FerroPanda
    @FerroPanda Автор вопроса
    В моём случае актуальным является PyTorch и там я нашёл как использовать параллелизм модели.
    Single-Machine Model Parallel Best Practices
    Если по простому, то раскидываем слои модели по разным устройствам и они поочереди считаются. Для ускорения процесса используется поточность - пока вторая карта считает последние слои, первая уже начинает считать первые слои на следующем примере.
    Ответ написан
    Комментировать
  • Где происходит ввод вывод и проверка данных?

    FerroPanda
    @FerroPanda
    Если до сих пор не разобрался, то добро пожаловать в PyTorch.)))
    https://proglib.io/p/generativno-sostyazatelnaya-n...
    Ответ написан
    Комментировать
  • Как сделать автозапуск приложения на Server 2012 в окружении определённого пользователя?

    FerroPanda
    @FerroPanda Автор вопроса
    Нужно просто настроить автологин для этого пользователя.
    Ответ написан
    Комментировать
  • PyTorch CUDA out of memory как исправить?

    FerroPanda
    @FerroPanda
    Столкнулся с такой же проблемой, почитал интернет и понял одну штуку. Да, хочется сразу всё загрузить в память и данные, и модель сети пожирнее и хотелось, чтобы torch сам управлял памятью/порциями данных и т.д. Фиг вам - это делаете вы сами своими ручками.
    Если данных много и они не помещаются в память, то вы подгружаете их частями из файла. Так же и с видеопамятью - если туда всё не влазит, то это ваша проблема по разделению всего этого на минимально приемлемые части и подгрузка/выгрузка из памяти видеокарты. Если ваша модель НН очень большая, то вы должны своими ручками разделить её на части и обрабатывать её послойно загружай/выгружая в память gpu. Ну и всё остальное в таком же духе.
    Короче, torch сам менеджментом памяти на gpu не занимается. Если данные в память видеокарты не влазят, то он просто выпадает в ошибку.
    Есть какие-то библиотеки, которые работаю обёрткой для torch и занимаются этим менеджментом, но я в ту сторону ещё не копал.
    Если у кого-то есть другая информация, то с радостью почитаю.

    P.S. В частности про Stable Diffusion. Там есть такая настройка как "Low memory mode (for 8Gb GPUs)", что можно интерпретировать как "режим для отстойных видях, у которых всего 8Гб памяти" ... а вы пытаетесь запустить на 6Гб ... сомневаюсь.
    Ответ написан
    Комментировать
  • Как правильно оформить функцию потерь в torch?

    FerroPanda
    @FerroPanda Автор вопроса
    Сам разобрался.
    В итоге всё сводится к тому, чтобы в своей какой-то функции обработать ответы сети, оценить их и самостоятельно высчитать ошибку. Потом взять любой ответ сети, на его основе создать свой правильный ответ, в сравнении с которым будет ошибка нужного нам размера, и потом это всё запихнуть в функцию потерь. Вся фишка в том, что к ответам сети привязаны графы их получения, т.е. в тензоре ответа сети есть вся последовательность как он получен. И на основании правильного ответа, ответа сети и этого графа, привязанного к ответу сети, выполняется обратное распространение ошибки. Нет графа - нет обучения. ))
    Ещё один момент - если в сети используется какой-то не типовой не дифференцируемый слой, то штатная оптимизация тоже не будет работать, но при этом никаких ошибок не покажет.
    В моём случае с выходной активацией softmax это оказалось не очень удачным вариантом, потому что допустим при ошибке 0,2 я не смог придумать как правильно создать целевой ответ.
    Условный код как это работает:
    optimizer.zero_grad()
    answers = agent.forward(train_data)
    #вычисляем ошибку на основе ответов сети в какой-то своей функции f(). 
    #Получаем например 0,2 - типа ошибка 20%
    nn_error = f(answers)
    #берём первый из ответов сети, который содержит граф расчётов
    nn_ans = answers[0]
    #тут нам нужно создать правильный ответ - возможны вариант и нужно придумать правильно
    #чтобы получить правильный можно как прибавить 20%, так и вычесть. Я прибавил.
    target_ans = nn_ans * (1 + nn_error)
    #функцию потерь можно сделать как свою, так и использовать штатную
    f_loss = nn.L1Loss()
    loss = f_loss(nn_ans, target_ans)
    loss.backward()
    optimizer.step()
    #print(list(agent.parameters()))
    Ответ написан
  • Какими алгоритмами обучения можно воспользоваться, с нестандартной функцией ошибки, которые на прямую не используют выходы обьучающих данных?

    FerroPanda
    @FerroPanda
    Я тоже не профессионал, но попробовал бы в данном случае генетический алгоритм - отбирать лучшего из пачки, немного мутировать, не забывая об исследователях, и дальше.
    Ответ написан
    Комментировать
  • Как сделать синхронизацию между облачными хранилищами?

    FerroPanda
    @FerroPanda
    О-диск (https://disk-o.cloud/) не подойдёт?
    Ответ написан
    Комментировать
  • Где можно арендовать дешевый сервер?

    FerroPanda
    @FerroPanda
    Всегда и на любом масштабе выгоднее своё, если в долгую.
    Была у меня как-то попытка влезть в аренду.
    Всё зависит от потребностей, сроков и необходимой надёжности.
    У меня была потребность 2 ядра, 4 гб и винт небольшой. Бэкапы свои, электричество и провайдер сильно не шалили. В итоге мне дешевле было купить неттоп и кинуть его в дальний угол, что я и сделал.
    Если это небольшое своё предприятие и несколько часов простоя не смертельная проблема, то проще купить на Али подходящий ксеон или собрать обычный хороший комп, взять хороший бесперебойник и наладить бэкапы - один на внешний диск, другой в облако - благо это сейчас дёшево. В итоге это всё обойдётся дешевле, чем аренда, если у вас руки есть.
    Аренда имеет смысл, если:
    1. Нужен аптайм 99,999999%
    2. Руки на это не заточены
    3. Ресурсы нужны на короткое время.
    4. Нужно быстро и много ресурсов.
    Во всех остальных случаях лучше своё железо.
    Если для вас первое это стоимость, то аренду можно не рассматривать.

    16 ядер, 64Гб оперативки - вы с али можете уложиться в 50к, что эквивалентно 3-м месяцам аренды.
    Если вам на месяц, то арендуйте. Если это рабочий сервер допустим под 1С, то покупайте.
    Ответ написан
    Комментировать
  • Нужен пример кода на Питоне обучения НС с подкреплением. Есть у кого?

    FerroPanda
    @FerroPanda Автор вопроса
    Вот нашёл ещё хороший пример для разбора и обучения на нём
    https://www.machinelearningmastery.ru/reinforcemen...
    Ответ написан
    Комментировать
  • Правильно ли я понимаю разницу между нейронной сетью и компьютерной программой?

    FerroPanda
    @FerroPanda
    Если совсем упрощённо.
    Программа это чётка последовательность действий Если-То-Иначе (Если высоко, то отойти назад, иначе прыгнуть).
    Нейронная сеть это сложная подгонка под ответ, ответ не бывает точным. Даже если он на 100% правильный, то это случайность. В примитивно варианте, НС это среднее арифметическое между примерами на которых учили эту НС.
    Если сеть учили на командах "ходить", а вы ей скажите "взлетай", то ответ она тоже выдаст, но он скорее всего будет абсурдным, но при этом не очевидно ошибочным, т.е. будет похож на правду.
    Ответ написан
    Комментировать
  • С какими ограничениями я могу столкнуться, если буду писать на чистом Keras?

    FerroPanda
    @FerroPanda
    На Keras вам будет недоступно обучение с подкреплением.
    Но лучше всё-таки начать с Keras - понять основы, набить пару шишек. И когда придёт осознание того, что вам нужно либо остаться на Keras, либо уйти в pytorch ... либо всё бросить.
    Ответ написан
    Комментировать
  • Матрица. Как правильно подать данные для обучения нейронной сети?

    FerroPanda
    @FerroPanda Автор вопроса
    Для keras при обучении LSTM, RNN или свёрточных сетей такие данные нужно подавать в виде тензора, т.е. делать матрицу трёхмерной или больше. Любую двухмерную матрицу M(Х, Y) можно представить как трёхмерную M(X, Y, Z), где Z=1.
    Делается это с помощью reshape - изменяется размерность массива при сохранении данных.
    M =np.reshape(M, (X, Y, Z)) или M =np.reshape(M, (X, Z, Y))
    В моём же случае если Х количество обучающих выборок, то графики в эксельку сохраняем как матрицу М(Х, 400), а потом после загрузки данных делаем M =np.reshape(M, (X, 4, 100)).
    В итоге получается Х наборов двухмерных матриц 4х100.
    В принципе, для загрузки в питон, в файл можно сохранить все данные в одну строчку, а потом с помощью reshape нарезать их в нужный формат (2d, 3d, 4d и т.д.).
    Ответ написан
    Комментировать
  • Как посчитать сколько нужно видеопамяти для тренировки нейронной сети?

    FerroPanda
    @FerroPanda Автор вопроса
    Сам отвечу. Необходимый объём памяти равен объёму обучающей выборки +ещё чуть-чуть. Если данных больше, чем объём памяти видеокарты, то падает производительность ядра, т.к. начинается постоянная подкачка данных из оперативной памяти в память видеокарты. Загрузка процессора видеокарты в таком случае падает в 2-3 раза, иногда больше.
    Если у вас обучающая выборка 10+ Гб, то на 1060 возможно загрузка карты будет постоянная приближённая к максимуму. Т.е. проц не быстрый и успевает обработать то, что подгрузилось. Карта 1080 и выше в такой ситуации будет постоянно простаивать в ожидании данных, т.е. время обучения НС окажется условно одинаковым.
    Если же объём выборки будет в районе 5-6 Гб или меньше, то 1080 окажется существенно быстрее.
    Ответ написан
    Комментировать
  • Как прогнозировать многомерные временные ряды в Keras?

    FerroPanda
    @FerroPanda
    Я так понял, что это возможно только в LSTM и подобных структурах.
    Создаёшь трехмерный массив data(x, y, z) где -
    x - количество обучающих выборок
    y - количество векторов в одной обучающей выборке
    z - количество данных в одном векторе.

    Потом создаёшь слой LSTM
    model.add(LSTM(units=32, input_shape=(y, z)))
    x указывать не нужно сеть сама поймёт что к чему.
    units - это количество выходов на следующий слой (32 как пример).

    Если моё представление ошибочно, то думаю меня поправят, но вроде работает.
    Ответ написан
    Комментировать