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监控等生产环境必备组件。

回到顶部