Golang开发工程师求职 - 伦敦地区
Golang开发工程师求职 - 伦敦地区 Seldon 正在招聘 Go 开发人员,从事在 Kubernetes 上部署机器学习的工作。
更多详情请访问:https://www.seldon.io/careers/
2 回复
你好,大卫,
希望你一切顺利。
我可以协助你满足对Go开发者的需求。
我的联系方式是:henry(AT)cisinlabs(DOT)com S>K>Y>P>E - live:.cid.dc5377d1a462c5b4
期待收到你的回复。
此致, 亨利
更多关于Golang开发工程师求职 - 伦敦地区的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Seldon的Go开发岗位专注于Kubernetes上的机器学习部署,这是一个结合云原生和AI技术的尖端领域。以下是该职位可能涉及的核心技术点及示例代码:
1. Kubernetes Operator开发 Seldon Core本身是基于Operator模式的机器学习部署框架,典型开发会涉及:
// 自定义资源控制器示例
func (r *SeldonDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
var sdep machinelearningv1.SeldonDeployment
if err := r.Get(ctx, req.NamespacedName, &sdep); err != nil {
return ctrl.Result{}, client.IgnoreNotFound(err)
}
// 业务逻辑:创建K8s资源
deployment := &appsv1.Deployment{
Spec: appsv1.DeploymentSpec{
Template: corev1.PodTemplateSpec{
Spec: corev1.PodSpec{
Containers: []corev1.Container{{
Image: sdep.Spec.Predictors[0].ComponentSpecs[0].Spec.Containers[0].Image,
}},
},
},
},
}
if err := r.Create(ctx, deployment); err != nil {
return ctrl.Result{}, err
}
return ctrl.Result{}, nil
}
2. gRPC微服务开发 机器学习模型通常通过gRPC暴露服务:
// 实现Seldon预测接口
type ModelServer struct {
pb.UnimplementedModelServer
}
func (s *ModelServer) Predict(ctx context.Context, req *pb.SeldonMessage) (*pb.SeldonMessage, error) {
// 模型推理逻辑
features := extractFeatures(req.GetData())
prediction := model.Predict(features)
return &pb.SeldonMessage{
Data: &pb.DefaultData{
Tensor: &pb.Tensor{
Values: prediction,
},
},
}, nil
}
// 启动gRPC服务
func main() {
lis, _ := net.Listen("tcp", ":9000")
s := grpc.NewServer()
pb.RegisterModelServer(s, &ModelServer{})
s.Serve(lis)
}
3. 性能优化关键点
// 批处理预测优化
type BatchPredictor struct {
batchSize int
queue chan *pb.SeldonMessage
results chan *pb.SeldonMessage
}
func (b *BatchPredictor) Process() {
var batch []*pb.SeldonMessage
for {
select {
case req := <-b.queue:
batch = append(batch, req)
if len(batch) >= b.batchSize {
go b.predictBatch(batch)
batch = nil
}
}
}
}
// GPU内存池管理
var gpuPool = sync.Pool{
New: func() interface{} {
return initGPUBuffer()
},
}
func PredictWithGPU(data []float32) {
buffer := gpuPool.Get().(*GPUBuffer)
defer gpuPool.Put(buffer)
copyToGPU(buffer, data)
result := executeKernel(buffer)
copyFromGPU(result)
}
4. 生产级部署特性
// 可观测性集成
func InstrumentedHandler() http.Handler {
// Prometheus指标
requestDuration := prometheus.NewHistogramVec(
prometheus.HistogramOpts{
Name: "request_duration_seconds",
Help: "Request latency distribution",
},
[]string{"endpoint"},
)
// 分布式追踪
tracer := otel.Tracer("seldon")
ctx, span := tracer.Start(context.Background(), "predict")
defer span.End()
// 结构化日志
logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
logger.Info("prediction_completed",
"model", "resnet50",
"latency_ms", 45.2,
)
}
该职位要求深入理解Kubernetes控制器模式、gRPC高性能通信、GPU加速计算和云原生可观测性体系。实际工作会大量涉及Custom Resource Definition(CRD)开发、Istio集成、Prometheus监控等生产环境必备组件。

