Openresty torch GPU模块加载问题
2016-9-29 16:53:2
收藏:0
阅读:83
评论:0
我正在使用带有Lua的openresty。当我没有cutorch,cunn(GPU)加载torch时,它可以很好地工作。但是它无法加载cutorch模块。
这是我的nginx.conf
error_log stderr notice;
daemon off;
events{}
http {
lua_code_cache on;
#lua_package_cpath '/usr/local/cuda/include/?.so;;';
init_by_lua_file 'evaluate.lua';
server {
listen 6788;
lua_code_cache on;
lua_need_request_body on;
client_body_buffer_size 10M;
client_max_body_size 10M;
location /ff {
# 仅限POST请求
if ($request_method !~ ^(POST)$ ) {
return 403;
}
content_by_lua '
local body = ngx.req.get_body_data()
if body == nil then
ngx.say("空的body")
else
local resp =FeedForward(body)
ngx.say(cjson.encode({result=resp}))
end
';
}
}
}
这是我的evaluate.lua代码
-- 加载所需的Lua模型
torch = require("torch")
nn = require("nn")
gm = require("image")
cutorch = require "cutorch"
cunn = require "cunn"
cjson = require("cjson")
-- 模型
modelPath='./model.t7'
ninputs = 3
model = nn.Sequential()
model:add(nn.Linear(ninputs,2))
-- 让我们保存一个虚拟模型
-- 以演示功能
torch.save(modelPath, model)
-- 加载预训练模型
net = torch.load(modelPath)
net:cuda()
net:evaluate()
-- 我们的终点函数
-- 此函数由ngx服务器调用
-- 接受一个Json body
function FeedForward(json)
print("开始")
-- 解码和提取x字段
local data = cjson.decode(json)
local input = torch.Tensor(data.x)
local response = {}
-- 示例检查
if input == nil then
print("未提供输入")
elseif input:size(1) ~=ninputs then
print("输入大小错误")
else
-- 评估输入并创建响应
local output = net:forward(input:cuda()):float()
-- 从张量到表
for i=1,output:size(1) do
response[i] = output[i]
end
end
-- 返回响应
return response
end
我正在尝试使用以下命令运行该模型
/usr/local/openresty/nginx/sbin/nginx -p "$(pwd)" -c "nginx.conf"
它启动得很好,但当我发送如下的curl请求时
curl -H "Content-Type: application/json" -X POST -d '{"x":[1,2,3]}' http://localhost:6788/ff
我得到以下错误。
2016/09/29 12:59:59 [notice] 10355#0: *1 [lua] evaluate.lua:28: FeedForward(): 开始, client: 127.0.0.1, server: , request: "POST /ff HTTP/1.1", host: "localhost:6788"
THCudaCheck FAIL file=/tmp/luarocks_cutorch-scm-1-700/cutorch/lib/THC/generic/THCStorage.cu line=40 error=3 : initialization error
2016/09/29 12:59:59 [error] 10355#0: *1 lua entry thread aborted: runtime error: unknown reason
stack traceback:
coroutine 0:
[C]: in function 'resize'
/home/ubuntu/torch/install/share/lua/5.1/cutorch/Tensor.lua:14: in function 'cuda'
/rootpath/evaluate.lua:41: in function 'FeedForward'
content_by_lua(nginx.conf:31):7: in function <content_by_lua(nginx.conf:31):1>, client: 127.0.0.1, server: , request: "POST /ff HTTP/1.1", host: "localhost:6788"
没有cutorch的情况下,该模型可以很好地运行,就像我删除了
net:cuda()
并将行替换为
local output = net:forward(input):float()
它也很好用。我还尝试使用th运行evaluate.lua,那里有cutorch和cunn包,并且它也正常工作。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
