Код: Выделить всё
import socket, sys
import threading
from transformers import pipeline
generator = pipeline('text-generation', model='gpt2-large', device="cuda")
def process_input(input_text):
request = generator(input_text, min_length=200)
return request[0]["generated_text"]
def handle_connection(conn):
with conn:
data = conn.recv(10240).decode()
processed_data = process_input(data.strip())
conn.sendall(processed_data.encode())
PORT = int(sys.argv[1])
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind(('localhost', PORT))
s.listen()
while True:
conn, addr = s.accept()
thread = threading.Thread(target=handle_connection, args=(conn,))
thread.start()
На стороне Java у меня есть класс LLMProcess, который обрабатывает создание процесса Python и взаимодействие с ним, используя потоки для каждого времени существования запроса.
Код: Выделить всё
LLMProcess process = new LLMProcess();
for (int i = 0; i < 50; i++) {
int index = i;
Thread thread = new Thread(() -> {
System.out.println("" + index + " : " + process.request("Sample text");
System.out.flush();
});
thread.start();
}
Цель — оптимизировать этот процесс за счет минимизации накладных расходов на использование потоков и полного использования доступных ресурсов графического процессора. Несмотря на наличие поддержки графического процессора, его загрузка при выполнении программы остается минимальной, обычно не превышающей 3%.
Подробнее здесь: https://stackoverflow.com/questions/784 ... e-pipeline
Мобильная версия