GOOGLE ADS

Mittwoch, 13. April 2022

Ich kann nicht auf mein bereitgestelltes Modell mit Seldon Core auf K8s zugreifen, um Werte vorherzusagen

Ich habe ein Modell zur Vorhersage von MNIST- Dataset-Werten, aber während der Konfiguration von my ingress.yamlund ich habe den Host angegeben, auf den ich mit meinem Befehl zugreifen kann curl, wird mir eine Fehlermeldung angezeigt

0curl: (6) Could not resolve host: mnist.testing

Und ich habe überprüft, ob mein Pod läuft. Hier ist meine Ingress-Datei:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mnist-classifier
namespace: my-model
annotations:
certmanager.k8s.io/acme-challenge-type: dns01
certmanager.k8s.io/acme-dns01-provider: clouddns
certmanager.k8s.io/cluster-issuer: letsencrypt-prod-dns
kubernetes.io/ingress.allow-http: "true"
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acme: "true"

spec:
rules:
- host: mnist.testing
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: tfserving-tfserving
port:
number: 8000
tls:
- hosts:
- '*.testing'
secretName: dns01-tls

Ich stelle mein Modell mit Seldon Core bereit, und dies ist meine Deployment.yaml:

apiVersion: machinelearning.seldon.io/v1
kind: SeldonDeployment
metadata:
name: tfserving
namespace: my-model
spec:
name: ala-deployment
predictors:
- graph:
children: []
implementation: TENSORFLOW_SERVER
modelUri: gs://seldon-aladin/mnist
serviceAccountName: user-gcp-ala
name: mnist-model
name: toto
replicas: 1

und dies ist mein Python-Code für die Vorhersage aus der URL:

mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
to_predict = tf.reshape(x_test[3], [1, 784])
payload = {"data":{"tensor":{"shape": [1,784], "values": to_predict}}}
!curl -X POST http://mnist.testing/predict -d payload -H "Content-Type: application/json"

Ps: Ich bin ein Anfänger in Kubernetes und stecke seit einer Woche fest. Und ich folge diesem Tutorial

Das Ergebnis meines curlBefehls, wenn ich hinzufüge--http0.9 -v --trace-ascii -

== Info: Trying 127.0.0.1:9000...
== Info: Connected to mnist.plz (127.0.0.1) port 9000 (#0)
=> Send header, 137 bytes (0x89)
0000: POST /predict HTTP/1.1
0018: Host: mnist.plz:9000
002e: User-Agent: curl/7.79.1
0047: Accept: */*
0054: Content-Type: application/json
0074: Content-Length: 4
0087:
=> Send data, 4 bytes (0x4)
0000: data
<= Recv data, 10 bytes (0xa)
Output exceeds the size limit. Open the full output data in a text editor
Warning: --trace-ascii overrides an earlier trace/verbose option
Note: Unnecessary use of -X or --request, POST is already inferred.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 14 0 10 100 4 8 3 0:00:01 0:00:01 --:--:-- 11
100 14 0 10 100 4 4 1 0:00:04 0:00:02 0:00:02 6
100 14 0 10 100 4 3 1 0:00:04 0:00:03 0:00:01 4


Lösung des Problems

Möglicherweise müssen Sie das numpy-Array mit konvertieren tolist. Können Sie zur Bestätigung ausgeben, was Sie per curl senden?

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...