1、报错日志1
java.lang.NoSuchMethodError: java.nio.file.Files.readString(Ljava/nio/file/Path;)Ljava/lang/String;
at org.pytorch.serve.util.ConfigManager.readFile(ConfigManager.java:235)
at org.pytorch.serve.util.ConfigManager.<init>(ConfigManager.java:139)
at org.pytorch.serve.util.ConfigManager.init(ConfigManager.java:285)
at org.pytorch.serve.ModelServer.main(ModelServer.java:83)
解决方案
jdk
的版本不对,安装jdk 11
2、报错日志2
2022-06-24T16:46:07,995 [DEBUG] W-9000-mnist_1.0 org.pytorch.serve.wlm.WorkerThread - Backend worker monitoring thread interrupted or backend worker process died.
java.lang.InterruptedException: null
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2056) ~[?:?]
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2133) ~[?:?]
at java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:432) ~[?:?]
at org.pytorch.serve.wlm.WorkerThread.run(WorkerThread.java:189) [model-server.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
解决方案
查看启动日志目录
log
-rw-rw-r-- 1 user user 0 6月 24 16:41 access_log.log
drwxrwxr-x 2 user user 4096 6月 24 17:17 config/
-rw-rw-r-- 1 user user 68837 6月 24 17:17 model_log.log
-rw-rw-r-- 1 user user 0 6月 24 16:41 model_metrics.log
-rw-rw-r-- 1 user user 184677 6月 24 17:17 ts_log.log
-rw-rw-r-- 1 user user 2492 6月 24 17:17 ts_metrics.log
(torch) user@master:~/code/python/serve/examples/image_classifier/mnist/logs$ more model_log.log
2022-06-24T16:41:37,286 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - Listening on port: /tmp/.ts.sock.9000
2022-06-24T16:41:37,289 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - [PID]2052890
2022-06-24T16:41:37,289 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - Torch worker started.
2022-06-24T16:41:37,290 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - Python runtime: 3.8.12
2022-06-24T16:41:37,349 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - Connection accepted: /tmp/.ts.sock.9000.
2022-06-24T16:41:37,392 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - model_name: mnist, batchSize: 1
2022-06-24T16:41:38,418 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - Backend worker process died.
2022-06-24T16:41:38,418 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - Traceback (most recent call last):
2022-06-24T16:41:38,419 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - File "/home/user/.conda/envs/torch/lib/python3.8/site-packages/ts/model_loader.py", line 100, in load
2022-06-24T16:41:38,420 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - module, function_name = self._load_handler_file(handler)
2022-06-24T16:41:38,420 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - File "/home/user/.conda/envs/torch/lib/python3.8/site-packages/ts/model_loader.py", line 162, in _load_handler_file
2022-06-24T16:41:38,421 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - module = importlib.import_module(module_name)
2022-06-24T16:41:38,422 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - File "/home/user/.conda/envs/torch/lib/python3.8/importlib/__init__.py", line 127, in import_module
2022-06-24T16:41:38,423 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - return _bootstrap._gcd_import(name[level:], package, level)
2022-06-24T16:41:38,423 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - File "" , line 1014, in _gcd_import
2022-06-24T16:41:38,424 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - File "" , line 991, in _find_and_load
2022-06-24T16:41:38,424 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - File "" , line 975, in _find_and_load_unlocked
2022-06-24T16:41:38,425 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - File "" , line 671, in _load_unlocked
2022-06-24T16:41:38,427 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - File "" , line 843, in exec_module
2022-06-24T16:41:38,428 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - File "" , line 219, in _call_with_frames_removed
2022-06-24T16:41:38,428 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - File "/tmp/models/4c322bc17dbd478985c9c9888ab9b836/mnist_handler.py", line 2, in <module>
2022-06-24T16:41:38,429 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - from ts.torch_handler.image_classifier import ImageClassifier
2022-06-24T16:41:38,429 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - File "/home/user/.conda/envs/torch/lib/python3.8/site-packages/ts/torch_handler/image_classifier.py", line 8, in <module>
2022-06-24T16:41:38,430 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - from .vision_handler import VisionHandler
2022-06-24T16:41:38,430 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - File "/home/user/.conda/envs/torch/lib/python3.8/site-packages/ts/torch_handler/vision_handler.py", line 11, in <module>
2022-06-24T16:41:38,431 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - from captum.attr import IntegratedGradients
2022-06-24T16:41:38,431 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG - ModuleNotFoundError: No module named 'captum'
2022-06-24T16:41:38,432 [INFO ] W-9000-mnist_1.0-stdout MODEL_LOG -
需要安装
captum
包,pip install captum
即可
class MyDataSet(Dataset):
def __init__(self,filepath):
z = np.loadtxt(filepath,dtype=np.float32,delimiter=',')
self.x_data = torch.from_numpy(z[:,:-1])
self.y_data = torch.from_numpy(z[:,[-1]])
self.len = z.shape[0] #self.len的目的是为了可以知道数据集的个数(759条数据)
def __len__(self):
return self.len
# 定义getitem函数,目的:可以将数据集其中的一条信息按照索引取出
def __getitem__(self, item):
return self.x_data[item],self.y_data[item]
dataset1 = MyDataSet('diabetes.csv')
dataloader = DataLoader(dataset=dataset1,batch_size=32,shuffle=True,num_workers=2)
DataLoader的参数:
- dataset =: 使用哪个数据集
- batch_size =: 将数据集拆成一组多少个进行训练
- shuffle =: 是否需要打乱数据
- num_workers =:几个mini_batch并行计算,一般<=你的电脑cpu数目
参考资料
https://blog.csdn.net/wangziyanger/article/details/127373637