Ubuntu上共享PyTorch模型的常用方式
在Ubuntu环境中,常见的模型共享方式包括:打包为Docker镜像进行分发与运行、用TorchServe发布成在线推理服务、通过NFS/Samba在局域网内共享模型文件,以及将模型导出为TorchScript .pt并集成到**C++共享库(.so)**供其他程序调用。下面给出可直接复用的操作要点与命令示例。
方式一 Docker镜像分发与运行
FROM pytorch/pytorch:latest
RUN pip install numpy torchvision matplotlib # 按需增减依赖
COPY model.py weights.pth /app/
WORKDIR /app
CMD ["python", "model.py"]
docker build -t pytorch-model .
docker run --rm pytorch-model
docker run --gpus all --rm pytorch-model
docker run --gpus all --rm -v "$(pwd):/data:rw" pytorch-model /data/model.py /data/weights.pth
方式二 TorchServe在线发布模型
torch-model-archiver \
--model-name mnist \
--version 1.0 \
--model-file examples/image_classifier/mnist/mnist.py \
--serialized-file examples/image_classifier/mnist/mnist_cnn.pt \
--handler examples/image_classifier/mnist/mnist_handler.py
# 生成 mnist.mar
docker run --rm -it \
-p 3000:8080 -p 3001:8081 \
pytorch/torchserve
方式三 局域网文件共享 NFS与Samba
sudo apt install nfs-kernel-server
sudo mkdir -p /path/share
echo '/path/share *(rw,sync,no_root_squash,no_subtree_check)' | sudo tee -a /etc/exports
sudo exportfs -a
sudo systemctl restart nfs-kernel-server
sudo apt install nfs-common
sudo mkdir -p /path/share
echo 'server_ip:/path/share /path/share nfs defaults 0 0' | sudo tee -a /etc/fstab
sudo mount -a
sudo apt install samba
sudo mkdir -p /home/share && sudo chmod 777 /home/share
echo '[share]
path=/home/share
available=yes
browseable=yes
public=yes
writable=yes
guest-ok=yes' | sudo tee -a /etc/samba/smb.conf
sudo systemctl restart smbd
sudo apt install cifs-utils
sudo mount.cifs //SAMBA_IP/share /mnt/share -o user=username,pass=password,rw,file_mode=0777,dir_mode=0777
方式四 C++共享库集成 TorchScript .so
import torch
class MyModule(torch.nn.Module):
def __init__(self):
super().__init__()
self.linear = torch.nn.Linear(10, 1)
def forward(self, x):
return self.linear(x)
model = MyModule()
model.eval()
traced = torch.jit.trace(model, torch.randn(1, 10))
traced.save("model.pt")
find_package(Torch REQUIRED)
add_library(pytorchtest SHARED test.cpp)
target_link_libraries(pytorchtest "${TORCH_LIBRARIES}")
set_property(TARGET pytorchtest PROPERTY CXX_STANDARD 11)
mkdir build && cd build
cmake -DCMAKE_PREFIX_PATH=/path/to/libtorch ..
make