Hintergrund Ein spezielles Gerät wird verwendet, um Inferenzen auf dem Deep-Learning-Modell durchzuführen. Die Maschine bietet nur eine in C++ gekapselte API zum Laden, Starten und Ableiten des Modells. Caffe wird weiterhin zum Modelltraining verwendet. Das Modell muss in ein vom Gerät unterstütztes Format konvertiert werden. Die Konvertierung des Modells wird hier nicht vorgestellt. Um aus der Modellbegründung einen Dienst zu machen, mussten wir C++ verwenden, um einen HTTP-Dienst zu erstellen, sodass der Benutzer über den HTTP-Dienst ein Bild posten konnte, der Server die Modellbegründung startete, die Modellvorhersage implementierte und das Ergebnis an den Client zurückgab. Gesamtrahmen Der Serviceinhalt des Kurzdienstes besteht darin, die empfangenen Bilder vorzuverarbeiten und dann eine Modellinferenz durchzuführen. Was jetzt getan werden muss, ist die Einführung des HTTP-Dienstes Voruntersuchung Für einen C++-Neuling besteht die anfängliche Recherche natürlich darin, zuerst zu suchen. Die Ergebnisse der C++-Suchverarbeitung für HTTP-Server sind ebenfalls unterschiedlich. Einige zeigen Ihnen, wie Sie einen HTTP-Server implementieren, andere verwenden eine Bibliothek von Drittanbietern und wieder andere befassen sich direkt mit einer Menge Code. . . Ich habe das hier auf Stackoverflow gesehen:
nicht NGINX mit FCGI-Funktionszuordnung ausprobieren? Implementierungsschritte Nginx ist ein magisches Tool für Proxys und wird häufig zum Lastenausgleich verwendet. Solange der Inhalt meines Clients an Nginx gesendet wird und Nginx die Daten dann an fcgi-bezogene Anwendungen weiterleitet, muss ich fcgi nur mit meinem Argumentationsprogramm kombinieren. nginx Einfach ausgedrückt ist nginx der Mittelsmann. Der Kunde sendet die Anfrage an den Mittelsmann, der zur Warenquelle geht, um die Waren abzuholen, und dann dem Kunden antwortet: Der Kunde teilt nginx mit, dass er ** Produkte kaufen möchte, und nginx geht zum entsprechenden Dienstanbieter, um den entsprechenden Dienst zu erhalten, und gibt ihn an den Kunden zurück. Was wir jetzt müssen, ist die Implementierung des FCGI-Teils. Was ist also FCGI? cgi Common Gateway Interface (CGI) ist eine wichtige Internettechnologie, die es einem Client ermöglicht, Daten von einem Webbrowser an ein auf einem Netzwerkserver ausgeführtes Programm anzufordern. CGI beschreibt einen Standard für die Datenübertragung zwischen einem Server und einem Anforderungsverarbeitungsprogramm. Die Standardeingabe und -ausgabe entsprechen hier einigen Umgebungsvariablen, die hauptsächlich drei Kategorien umfassen: anforderungsbezogene Umgebungsvariablen, serverbezogene Umgebungsvariablen und clientbezogene Umgebungsvariablen. fastcgi FastCGI ist eigentlich CGI mit einigen erweiterten Funktionen. Es ist eine Verbesserung von CGI. Es ist auch ein Standard zur Beschreibung der Datenübertragung zwischen Client- und Webserverprogrammen. FastCGI zielt darauf ab, den Interaktionsaufwand zwischen Webservern und CGI-Programmen zu reduzieren, sodass Webserver mehr Webanforderungen gleichzeitig verarbeiten können. Im Gegensatz zu CGI, das für jede Web-Anforderung einen neuen Prozess erstellt, verwendet FastCGI persistente Prozesse zur Verarbeitung einer Reihe von Web-Anforderungen, die nicht vom Webserver, sondern vom FastCGI-Prozessmanager verwaltet werden. Warum sagen wir, dass es die Kosten der Interaktion senkt? Hier kommt es auf den Unterschied zwischen den beiden Behandlungsmethoden an! Der Workflow von CGI: Wenn ein Client eine neue Anfrage sendet, muss zuerst ein CGI-Unterprozess erstellt werden. Nachdem CGI die Anfrage verarbeitet hat, werden so viele CGI-Unterprozesse gestartet, wie Verbindungen bestehen. Wenn die Anzahl der Anfragen groß ist, werden viele Systemressourcen belegt. fastcgi Fastcgi verwendet kontinuierliche Prozesse, um eine Reihe von Anfragen zu verarbeiten. Diese Prozesse werden vom Fastcgi-Prozessmanager verwaltet. Der spezifische Prozess ist wie folgt: Man kann es auch so vergleichen: cgi verkauft mit Eiern gefüllte Pfannkuchen. Wenn die Kunden essen möchten, zündet er das Feuer an, schlägt die Eier, breitet die Pfannkuchen aus und schaltet dann das Feuer aus. Dann warten Sie auf den nächsten Kunden Fastcgi ist die alte Version eines Frühstücksladens. Dort ist eine Gruppe von Kellnern damit beschäftigt, Mahlzeiten zuzubereiten, die vor Ort gekocht werden müssen. Der Chef muss nur die Bestellungen arrangieren, und die Kellner sind für das Servieren von Haferbrei und Pfannkuchen verantwortlich. Konkrete Schritte
Wenn Sie Ihre Arbeit gut machen möchten, müssen Sie zuerst Ihre Werkzeuge schärfen und zuerst die Umgebung aufbauen! Durch das Lesen vieler Blog-Inhalte habe ich die einfachsten Installationsschritte gefunden. Viele davon bestehen darin, den Quellcode herunterzuladen und ihn dann mit make zu kompilieren. Diese häufiger verwendeten Bibliotheken sind jedoch bereits in das Softwarepaket integriert. Installation der C++-Entwicklungsumgebung apt-get installiere Build-Essential nginx apt-get installiere nginx fastcgi sudo apt-get installiere libfcgi-dev Spawn-FCGI apt-get installiere spawn-fcgi Schreiben und Ausführen von Programmen #include <iostream> #include "fcgio.h" Namespace std verwenden; int Haupt(void) { // Sichern Sie die stdio-Streambufs streambuf * cin_streambuf = cin.rdbuf(); streambuf * cout_streambuf = cout.rdbuf(); streambuf *cerr_streambuf = cerr.rdbuf(); FCGX_Request-Anfrage; FCGX_Init(); FCGX_InitRequest(&request, 0, 0); während (FCGX_Accept_r(&request) == 0) { fcgi_streambuf cin_fcgi_streambuf(Anfrage.in); fcgi_streambuf cout_fcgi_streambuf(Anfrage.out); fcgi_streambuf cerr_fcgi_streambuf(Anfrage.err); cin.rdbuf(&cin_fcgi_streambuf); cout.rdbuf(&cout_fcgi_streambuf); cerr.rdbuf(&cerr_fcgi_streambuf); cout << "Inhaltstyp: text/html\r\n" << "\r\n" << "<html>\n" << " <Kopf>\n" << " <title>Hallo Welt!</title>\n" << " </head>\n" << " <Text>\n" << " <h1>Hallo Welt!</h1>\n" << " </body>\n" << "</html>\n"; } cin.rdbuf(cin_streambuf); cout.rdbuf(cout_streambuf); cerr.rdbuf(cerr_streambuf); gebe 0 zurück; Kompilieren des Programms g++ cgi.cpp -o cgidemo -lfcgi Ändern Sie die Nginx-Konfigurationsdatei vi /usr/local/nginx/conf/nginx.conf Starten Sie nginx nginx -c /usr/local/nginx/conf/nginx.conf Überprüfen Sie, ob nginx normal über den Browser gestartet wird: http://*******:80 Starten Sie den spwan-cgi-Prozess spawn-fcgi -a 127.0.0.1 -C 20 -p 7070 ./cgidemo Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Detaillierte Erläuterung der benutzerdefinierten Anweisungen zur Vue.js-Quellcodeanalyse
>>: Analyse der gemeinsamen Indexfunktion von MySQL und Anwendungsbeispiele
Software- und Hardwareumgebung centos7.6.1810 64b...
Im Bereich Design gibt es jedes Jahr unterschiedl...
Inhaltsverzeichnis 1. Strukturelle Anweisungen Mo...
1. ROW_NUMBER() Definition: Die Funktion ROW_NUMB...
Vorwort Der Blogger verwendet die Idea IDE. Da di...
Dieser Hinweis ist ein Installationstutorial. Er ...
Inhaltsverzeichnis Konfigurieren Sie zuerst packa...
Inhaltsverzeichnis Vorwort Einzelne Dateikomponen...
Inhaltsverzeichnis Hörer 1.Uhreneffekt 2.Uhr 1.1 ...
Wichtige Punkte Mit der CSS-Eigenschaft „Größe än...
Da ich in letzter Zeit mit Linux herumgespielt ha...
Wenn der vorhandene Videoplayer die Anforderungen...
Inhaltsverzeichnis erster Schritt Schritt 2 Schri...
1. Umweltanforderungen 1. Docker 17 und höher wur...
Installationsmethode für komprimierte MySQL 8.0-P...