为了将单条推理程序改为批量推理程序,并实现您的要求,我们需要进行以下步骤:
输入的图片和视频都是随机从视频文件夹、图片文件夹挑选,组成输入对:
需要编写一个函数来读取指定文件夹中的所有图片和视频文件。
使用随机选择机制来组合这些文件作为输入对。
加入多线程:
使用 concurrent.futures.ThreadPoolExecutor 来管理多线程任务。
让每个GPU都固定加载需要的模型,避免重复加载、释放模型:
在初始化时为每个GPU加载一次模型,并在多线程中复用这些模型。
生成线程时动态选择GPU,如果选择好了,这个线程全周期一直在当前GPU,防止张量、数据不在同一块GPU:
在每个线程中设置环境变量 CUDA_VISIBLE_DEVICES,以确保每个线程只使用指定的GPU。