Products
GG网络技术分享 2025-10-24 21:21 7
TensorFlow Serving 是一款开源的机器学模型服务工具, 它能够将训练优良的模型部署到线上,并用 gRPC 接口收下外部调用。而 TensorFlow Serving Java 则是专门为 Java 应用程序设计的,使得 Java 开发者能够轻巧松地利用 TensorFlow 模型服务。
在用 TensorFlow Serving Java 之前,先说说需要创建一个服务器连接的 Client 对象。
import org.tensorflow.framework.DataType;
import org.tensorflow.framework.TensorProto;
import org.tensorflow.servables.common.CleanupAble;
import java.util.Arrays;
import static org.tensorflow.framework.TensorProto.*;
public class TensorFlowService implements CleanupAble {
public TensorFlowService {
// 创建一个指向指定端口的Stub
}
public float predict {
TensorProto.Builder builder = TensorProto.newBuilder;
builder.setDtype;
builder.addAllFloatVal.flatMapToDouble.collect));
builder.addDim;
builder.addDim;
builder.addDim;
TensorProto inputProto = builder.build;
// 发送求
// 通过Stub返回后来啊
}
@Override
public void close throws Exception {
// 销毁连接
}
}
在创建客户端之前,需要启动 TensorFlow Serving 服务器并加载要用的模型。
import org.tensorflow.framework.ConfigProto;
import org.tensorflow.framework.GPUOptions;
import org.tensorflow.serving.*;
import tensorflow.serving.Model;
import tensorflow.serving.Model.VersionPolicy.LatestVersionPolicy;
import tensorflow.serving.SessionServiceGrpc.SessionServiceBlockingStub;
public TensorFlowService {
// 创建stub用于与SessionService进行传信
SessionServiceBlockingStub stub = SessionServiceGrpc.newBlockingStub;
// 创建求
Model.ModelSpec modelSpec = Model.ModelSpec.newBuilder
.setName
.setVersionPolicy.setLatest).build)
.build;
GetModelMetadataRequest metadataRequest = GetModelMetadataRequest.newBuilder
.setModelSpec
.addMetadataField
.build;
// 获取模型元数据信息
GetModelMetadataResponse metadataResponse = stub.getModelMetadata;
// 从元数据信息中获取模型输入和输出的名称、 形状等
SignatureDefMap signatureDefMap = metadataResponse.getMetadataMap.get;
SignatureDef signatureDef = signatureDefMap.getSignatureDefMap.entrySet.stream.findFirst.orElseThrow
.getValue;
Map.Entry input = signatureDef.getInputsMap.entrySet.stream.findFirst.orElseThrow;
String inputTensorName = input.getKey;
TensorInfo inputTensorInfo = input.getValue;
Map.Entry output = signatureDef.getOutputsMap.entrySet.stream.findFirst.orElseThrow;
String outputTensorName = output.getKey;
TensorInfo outputTensorInfo = output.getValue;
// 创建Session
SessionOptions sessionOptions = SessionOptions.newBuilder
.setConfig
.setGpuOptions
.setPerProcessGpuMemoryFraction)
.build)
.build;
CreateSessionRequest sessionRequest = CreateSessionRequest.newBuilder
.setSessionConfig
.setModelSpec
.build;
CreateSessionResponse sessionResponse = stub.createSession;
sessionHandle = sessionResponse.getSessionHandle;
}
在创建客户端并加载模型之后能开头向模型发送求并处理模型返回的后来啊。
public float predict {
TensorProto.Builder builder = TensorProto.newBuilder;
builder.setDtype;
builder.addAllFloatVal.flatMapToDouble.collect));
builder.addDim;
builder.addDim;
builder.addDim;
TensorProto inputProto = builder.build;
// 创建request对象
RunOptions runOptions = RunOptions.newBuilder
.setTraceLevel
.build;
Map inputsMap = Map.of;
Map outputsMap = Map.of.addDim.setSize.build).build, DataType.DT_FLOAT));
RunRequest request = RunRequest.newBuilder
.setSessionHandle
.setRunOptions
.setInputFeed.addTensor.build))
.putAllFetch
.build;
// 发送求
RunResponse response = stub.run;
// 处理后来啊
}
TensorFlow Serving Java 为 Java 应用程序给了与 TensorFlow 模型服务集成的无缝体验。它给了轻巧松容易用的 API,使得用 TensorFlow 模型服务变得更轻巧松。开发人员只需要轻巧松地加载模型并用客户端就能处理输入和输出。还有啊, TensorFlow Serving Java 还给了灵活的配置选项和可 性,并能与其他 TensorFlow 项目无缝集成。
观点。
Demand feedback