Как оптимизировать размер пакета вывода в C++ pytorch libtorch?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как оптимизировать размер пакета вывода в C++ pytorch libtorch?

Сообщение Anonymous »

У меня есть служба вывода, использующая процессор (позже я перейду на графический процессор, но сейчас я застрял с процессором), которая принимает запросы через экономию и возвращает результат вывода
Сейчас это делается вывод по одному запросу за раз, я думаю, что внутри libtorch есть некоторая оптимизация процессора, такая как SIMD, которая может сделать пакетный вывод более оптимальным
здесь простой код C++, который я тестирую с игрушечной моделью (модель, которая имитирует евклидово расстояние) с эталоном для каждого номера партии

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

    #include  // One-stop header.
#include 
#include 
#include 
#include  // Required for get_num_threads and set_num_threads
#include 
std::vector batch_infer_distance(torch::jit::Module& model, const std::vector& point_pairs) {
int batch_size = point_pairs.size();
torch::Tensor input_tensor = torch::empty({batch_size, 4});
for (int i = 0; i < batch_size; ++i) {
input_tensor[i] = torch::tensor(point_pairs[i]);
}

torch::Tensor output = model.forward({input_tensor}).toTensor();
std::vector distances(output.data_ptr(), output.data_ptr() + output.numel());
return distances;
}

std::vector generate_random_points(int batch_size) {
std::vector point_pairs;
point_pairs.reserve(batch_size);
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution dis(0.0, 100.0); // Uniform distribution between 0 and 100
for (int i = 0; i < batch_size; ++i) {
float x1 = dis(gen);
float y1 = dis(gen);
float x2 = dis(gen);
float y2 = dis(gen);
point_pairs.push_back({x1, y1, x2, y2});
}

return point_pairs;
}

int main(int argc, const char* argv[]) {

int num_threads = at::get_num_threads();

// Print the number of threads
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79105641/how-do-you-optimize-inference-batch-size-in-c-pytorch-libtorch[/url]
Ответить

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

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

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

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

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