Как эффективно делать множество прогнозов с помощью небольшой нейронной сети?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как эффективно делать множество прогнозов с помощью небольшой нейронной сети?

Сообщение Anonymous »

Мне нужно сделать много прогнозов с помощью небольших нейронных сетей (100–150 параметров). Я реализовал это в TensorFlow и столкнулся с проблемами эффективности. вот псевдокод:

Код: Выделить всё

for my_dense_netowrk,my_lstm_netowrk in networks_list
my_dense_netowrk.paramters = 100
my_lstm_netowrk.paramters = 150
for images in data[:60]:
@tf.function
def tf_wrapper(images, state):
model_data = meta_model(images)
data_prepared = image_preparation(model_data)

results = my_dense_netowrk(data_prepared)
results.shape = (19000,1,1)

better_results, state = my_lstm_netowrk(results, state)
return better_results, state

better_results, state = tf_wrapper(images, state)

my_dense_netowrk_n2.paramters = 100
my_lstm_netowrk_n2.paramters = 100

and continue...
  • Я использую API конвейера данных тензорного потока, и фактически все необходимые данные (переменная данных) могут быть размещены в моей памяти.
  • Я не указал размер пакета для своей нейронной сети при построении и вставке данных в виде огромной стопки (размер пакета 19000) в нейронную сеть для распараллеливания всего. Даже lstm не ограничен обработкой последовательностей, поскольку ему приходится обрабатывать 19 000 входных данных одновременно. Но когда я увеличил параметры своей нейронной сети в 10 раз (что мне не нужно), мой код почти не заметил, полагая, что размер пакета довольно велик.
  • @tf. Функция немного ускоряет работу.
  • Я пробовал профилировать, но не смог найти узкое место, так как происходит слишком много операций. Я обнаружил, что запуск ядра занимает половину времени, потому что обычно тензорный поток ожидает, что этот процесс займет много времени, поэтому я думаю, он не оптимизирован для таких задач, потому что, когда я увеличиваю свой цикл с 60 до 6000, он становится в 10 раз более эффективным на каждый проход цикла! Похоже, на подготовку требуется время.
  • Функция image_preparation() использует только tf-операции, такие как изменение формы, стек, плитка, и я не могу подготовить данные заранее.
  • Я использую macOS с чипом M3 Max, и нет никакой разницы, использую ли я графический процессор или процессор. Я пробовал Python 3.8, 3.9, 3.10, 3.11, 3.12.
Так что похоже, что tensorflow не разливается по моим моделям, что странно, и там В Интернете не так много дискуссий о том, как эффективно получать множество прогнозов из небольших моделей, все используют такие библиотеки для огромных НС. И графический процессор совсем не помогает, хотя я думаю, что мой конвейер должен от этого выиграть, поскольку я использую огромные пакеты. Поэтому мне очень сложно найти хорошее решение моей проблемы, и я хотел попросить совета. Может быть, для моей проблемы есть лучшие фреймворки машинного обучения (PyTorch, Jax, может быть, что-то еще?) Или я просто плохо разбираюсь в профилировании? или мне для этого попробовать собрать собственное ядро ​​на ассемблере? Я не знаю

Подробнее здесь: https://stackoverflow.com/questions/786 ... al-network
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»