Dans lequel à nous agence de blog spécimen, nous-mêmes avons périodique hein rapetisser le déploiement et la attente des modèles de charpente comme DataRobot MLOps. Moi-même avons permis un modèle pré-formé de HuggingFace à l’bienfaisance de Tensorflow, et nous-mêmes avons autographe un scénario d’analogie compréhensible et téléchargé le scénario et le modèle assimilé en beaucoup que conditionnement de modèle individualisé sur DataRobot MLOps. Moi-même avons en conséquence couramment montré le modèle de charpente pré-entraîné sur les serveurs DataRobot en une paire de minutes uniquement.

Dans lequel cet agence de blog, nous-mêmes montrerons hein toi-même pouvez couramment bonifier amplement la promptitude d’analogie du même modèle globalité en réduisant sa potion de avoir. Dans lequel à nous processus patiemment, toi-même apprendrez que la singulière truc boîtier est de changer votre modèle de charabia au hauteur ONNX. Le béquille autochtone moyennant ONNX Runtime chez DataRobot s’occupera du déchet.

Par conséquent les grands modèles de charabia sont-ils difficiles moyennant l’analogie ?

Avant, nous-mêmes avons verbal de ce que sont les modèles de charabia. L’bâti neuronale des grands modèles de charabia peut détenir des milliards de paramètres. Empressé un noble afflux de paramètres signifie que ces modèles seront gourmands en avoir et lents à imaginer. Avec cette discernement, ils sont difficiles à prétexter moyennant l’analogie comme des performances élevées. De puis, nous-mêmes voulons que ces modèles traitent non uniquement une début à la coup, simplement traitent comme des lots d’zakouski et les consomment puis rentablement. La obligeante renseignement est que nous-mêmes avons un entremise d’bonifier à elles performances et à eux passif en accélérant à eux méthode d’analogie, cabinet aux possibilité du runtime ONNX.

Qu’est-ce qu’ONNX et le runtime ONNX ?

ONNX (Open Neural Network Exchange) est un hauteur normalisé affable moyennant remémorer des modèles d’instruction procédural (ML) construits sur hétérogène frameworks textuels que PyTorch, Tensorflow/Keras, scikit-learn. ONNX Runtime est comme un pochade open début basé sur la philologie ONNX. Il s’agit d’un entraîneur d’analogie optimisé moyennant précipiter le méthode d’analogie des modèles convertis au hauteur ONNX sur une étendu série de systèmes d’vente, de langages et de estrades matérielles.

Fournisseurs d'exécution ONNX Runtime
Fournisseurs d’élaboration ONNX Runtime. Prélude : milieu d’élaboration ONNX

ONNX et son milieu d’élaboration forment recueil la charpente de la planification et de l’rudesse de l’analogie de modèle chez les environnements de confection. Absoute à certaines techniques d’productivisme1, ONNX Runtime précipité l’analogie de modèle sur contradictoires estrades, semblables que les appareils mobiles, le cloud ou les environnements de rive. Il prête une séparation en distributeur les possibilité de réserve de ces estrades via une liaison API buté.

De puis, en convertissant des modèles abords ONNX, nous-mêmes bénéficions de l’gain de l’interopérabilité du convenable car nous-mêmes pouvons vendre des modèles formés chez hétérogène cadres ML abords ONNX et débauche versa, pourvoir des modèles ONNX prématurément exportés en liste et les prétexter chez à nous convenable ML de alternance.

Phosphorescence de l’analogie de modèle basée sur les transformateurs comme ONNX Runtime

Syncrétique tests de geste exécutés par des équipes d’savoir-faire indépendantes du terrain ont confirmé que les modèles basés sur des transformateurs peuvent goûter de allure énergique des optimisations ONNX Runtime moyennant rapetisser la retard et développer le passif sur les processeurs.

Plusieurs exemples incluent le devoir de Microsoft alentour de l’productivisme du modèle BERT à l’bienfaisance d’ONNX Runtime2, Résultats de l’montré comparative Twitter moyennant l’analogie de microprocesseur de modificateur chez Google Cloud3et l’rudesse des transformateurs de phrases comme Hugging Faciès Summum4.

image
Prélude : Microsoft5

Ces benchmarks démontrent que nous-mêmes pouvons développer amplement le passif et les performances des modèles NLP basés sur des transformateurs, en inhabituel cabinet à la décompte. Par principe, chez le benchmark de l’fortifié Microsoft plus haut, le modèle BERT à 12 parturition quantifié comme Intel® DL Boost : VNNI et ONNX Runtime peut commencer jusqu’à 2,9 coup des gains de performances.

Comme DataRobot MLOps prend-il nativement en frais ONNX ?

Avec vos workflows de modélisation ou d’analogie, toi-même pouvez enrôler votre glossaire individualisé chez DataRobot comme ces une paire de mécanismes :

  1. En beaucoup que tâche personnalisée : Ressources que DataRobot fournisse des centaines de besognes intégrées, il existe des situations où toi-même avez disette de méthodes de prétraitement ou de modélisation qui ne sont pas affamer prises en frais prêtes à l’entrain. Avec contenter cette ânerie, toi-même pouvez implanter une tâche personnalisée qui implémente une préférence manquante, ajouter cette tâche chez un blueprint chez DataRobot, plus corriger, rapprocher et progresser ce blueprint de la même allure que toi-même le feriez moyennant n’importe quoi blueprint engendré par DataRobot. Vous-même pouvez tester le marche du méthode ici.
  2. En beaucoup que modèle d’analogie individualisé : Il peut s’conduire d’un modèle pré-formé ou d’un glossaire client préparé moyennant l’analogie, ou d’une union des une paire de. Un modèle d’analogie peut détenir un dessin d’début/querelle prédéfini moyennant la arrangement/retraite/localisation d’anomalies ou participer exactement non structuré. Vous-même pouvez dévorer puis de états sur le déploiement de vos modèles d’analogie personnalisés ici.

Dans lequel les une paire de cas, aussi d’faire vos modèles personnalisés sur la kiosque DataRobot AI comme acheté en frais de MLOps, toi-même devez d’apparence distinguer l’un de nos environnements_dropin_publics textuels que Python3 + PyTorch, Python3 + Keras/Tensorflow ou Python3 + ONNX. Ces environnements définissent chaque personne les bibliothèques disponibles chez l’milieu et fournissent un modèle. Vos propres exigences de analogie peuvent participer appliquées à l’un de ces environnements de charpente moyennant mouvoir un milieu d’élaboration moyennant vos besognes personnalisées ou vos modèles d’analogie personnalisés.

L’gain auxiliaire des environnements d’élaboration DataRobot est que si toi-même avez un esseulé artifice de modèle et que votre modèle est analogue à certaines structures d’début/querelle, ce qui signifie que toi-même n’avez pas disette d’un scénario d’analogie individualisé moyennant métamorphoser la sollicitation d’début ou les prédictions brutes, toi-même n’avez même pas devez arranger un scénario individualisé chez votre conditionnement de modèle téléchargé. Dans lequel le cas ONNX, si toi-même ne souhaitez imaginer qu’comme un esseulé documentation .onnx et que ce documentation de modèle est analogue à la clarté structurée, cependant toi-même sélectionnez l’milieu de charpente Python3 + ONNX moyennant votre conditionnement de modèle individualisé, DataRobot MLOps saura hein pourvoir ce modéliser en liste et imaginer comme. Avec en science puis et disposer la moufle sur des exemples altruistes à cloner, veuillez prospecter la bout des modèles de modèles d’analogie personnalisés chez à nous repère de modèles personnalisés.

Algorithme patiemment

Derrière détenir lu toutes ces informations sur les avantages en termes de performances et la liberté relative de la défi en œuvre de modèles via ONNX, je suis sûr que toi-même êtes puis que excité de apparaître.

Avec enrichir un principe de aboutissement en aboutissement, nous-mêmes allons achever les étapes suivantes :

  1. Prenez le même modèle de création chez à nous agence de blog spécimen et enregistrez-le sur votre microsillon régional.
  2. Exportez le modèle Tensorflow assimilé au hauteur ONNX.
  3. Empaquetez l’artifice de modèle ONNX comme un scénario d’analogie individualisé (custom.py).
  4. Téléchargez le conditionnement de modèle individualisé abords DataRobot MLOps sur l’milieu de charpente ONNX.
  5. Créez un déploiement.
  6. Envoyez des requêtes de prévision au enclin de issue de déploiement.

Par angoisse de méticulosité, nous-mêmes ne montrerons que les étapes supplémentaires et modifiées que toi-même effectuerez en puis de la processus patiemment de à nous blog spécimen, simplement la défi en œuvre de aboutissement en aboutissement est abandonné sur ce bloc Google Colab en deçà le repère de la corps DataRobot.

Rassemblement du modèle Foundation en ONNX

Avec ce tutoriel, nous-mêmes utiliserons le métamorphoser accessoire de révolution ONNX de la librairie moyennant changer à nous tourment palladium à LLM au hauteur ONNX chez ci-après.

FOUNDATION_MODEL = "bert-large-uncased-whole-word-masking-finetuned-squad"

!serpent -m transformers.onnx --model=$FOUNDATION_MODEL --feature=question-answering $BASE_PATH


Mutation de votre scénario d’analogie individualisé moyennant prétexter votre modèle ONNX

Avec l’analogie comme ce modèle sur DataRobot MLOps, à nous scénario custom.py chargera le modèle ONNX en liste chez une vacation d’élaboration ONNX et gérera les demandes de prévision entrantes chez suit :

%%writefile $BASE_PATH/custom.py

"""

Copieuse 2021 DataRobot, Inc. and its affiliates.

All rights reserved.

This is proprietary début glossaire of DataRobot, Inc. and its affiliates.

Released under the terms of DataRobot Tool and Utility Agreement.

"""

importation json

importation os

importation io

from transformers importation AutoTokenizer

importation onnxruntime as ort

importation numpy as np

importation pandas as pd

def load_model(input_dir):

    ordinaire model_load_duration

    onnx_path = os.path.join(input_dir, "model.onnx")

    tokenizer_path = os.path.join(input_dir)

    tokenizer = AutoTokenizer.from_pretrained(tokenizer_path)

    sess = ort.InferenceSession(onnx_path)

    return sess, tokenizer

def _get_answer_in_text(produit, input_ids, idx, tokenizer):

    answer_start = np.argmax(produit(0), axis=1)(idx)

    answer_end = (np.argmax(produit(1), axis=1) + 1)(idx)

    answer = tokenizer.convert_tokens_to_string(

        tokenizer.convert_ids_to_tokens(input_ids(answer_start:answer_end))

    )

    return answer

def score_unstructured(model, data, query, **kwargs):

    ordinaire model_load_duration

    sess, tokenizer = model

    # Assume batch input is sent with mimetype:"text/csv"

    # Treat as single prediction input if no mimetype is set

    is_batch = kwargs("mimetype") == "text/csv"

    if is_batch:

        input_pd = pd.read_csv(io.StringIO(data), sep="|")

        input_pairs = list(zip(input_pd("context"), input_pd("tourment")))

        inputs = tokenizer.batch_encode_plus(

            input_pairs, add_special_tokens=True, padding=True, return_tensors="np"

        )

        input_ids = inputs("input_ids")

        produit = sess.run(("start_logits", "end_logits"), input_feed=dict(inputs))

        responses = ()

        for i, row in input_pd.iterrows():

            answer = _get_answer_in_text(produit, input_ids(i), i, tokenizer)

            response = {

                "context": row("context"),

                "tourment": row("tourment"),

                "answer": answer,

            }

            responses.append(response)

        to_return = json.dumps(

            {

                "predictions": responses

            }

        )

    else:

        data_dict = json.loads(data)

        context, tourment = data_dict("context"), data_dict("tourment")

        inputs = tokenizer(

            tourment,

            context,

            add_special_tokens=True,

            padding=True,

            return_tensors="np",

        )

        input_ids = inputs("input_ids")(0)

        produit = sess.run(("start_logits", "end_logits"), input_feed=dict(inputs))

        answer = _get_answer_in_text(produit, input_ids, 0, tokenizer)

        to_return = json.dumps(

            {

                "context": context,

                "tourment": tourment,

                "answer": answer

            }

        )

    return to_return

Filiation de votre déploiement de modèle d’analogie individualisé sur l’milieu de charpente ONNX de DataRobot

Puis dernière variation, nous-mêmes allons mouvoir le déploiement de ce modèle individualisé sur l’milieu de charpente ONNX de DataRobot MLOps chez ci-après :

deployment = deploy_to_datarobot(BASE_PATH,

                                "ONNX",

                                "bert-onnx-questionAnswering",

                                "Pretrained BERT model, fine-tuned on SQUAD for tourment answering")

Sinon le déploiement est réputation, nous-mêmes testons à nous modèle individualisé comme à nous début de copie et nous-mêmes nous-mêmes assurons que nous-mêmes obtenons des réponses à nos questions par à nous LLM pré-formé :

datarobot_predict(test_input, deployment.id)

Analogie des performances

Affamer que globalité est réputation, il est date de évaluer à nous spécimen déploiement Tensorflow comme l’vraisemblance ONNX.

À des fins d’montré comparative, nous-mêmes avons factice à nous déploiement de modèle individualisé à n’détenir que 4 Go de liste à éloigner de nos paramètres MLOps aussi que nous-mêmes puissions évaluer les alternatives Tensorflow et ONNX en deçà des contraintes de avoir.

Puis le montrent les résultats ci-après, à nous modèle chez ONNX anticipé 1,5 coup puis ardemment que son similaire Tensorflow. Et ce réussite peut participer vu à défaut une compréhensible expatriation ONNX de charpente auxiliaire, (c’est-à-dire hormis singulières configurations d’productivisme, semblables que la décompte).

Durée de la prédiction

En ce qui concerne la potion de avoir, tout bouchée en conséquence ~ 100 niveaux, à nous déploiement de modèle Tensorflow commence à exclure des fautes de liste incomplète (OOM), ce qui signifie que ce modèle nécessiterait puis de 4 Go de liste moyennant conditionner et imaginer entour 100 niveaux d’début. D’contradictoire bouchée, à nous déploiement de modèle ONNX peut évaluer des prédictions jusqu’à ~ 450 niveaux hormis multiplier d’absurdité OOM. En solution de à nous cas d’manutention, le document que le modèle Tensorflow gère jusqu’à 100 niveaux, cependant que son conforme ONNX gère jusqu’à 450 niveaux large que le modèle ONNX est puis éplucheur en avoir, car il utilise infiniment moins de liste.

Commencez à déterrer évaporé d’ONNX moyennant vos modèles personnalisés

En remorquant évaporé de la philologie open début ONNX et du runtime ONNX, les constructeurs d’IA peuvent déterrer évaporé de l’interopérabilité du framework et des performances d’analogie accélérées, en inhabituel moyennant les grands modèles de charabia basés sur des transformateurs sur à eux milieu d’élaboration rouflaquette. Absoute à sa acheté en frais issue d’ONNX, DataRobot MLOps permet aux organisations de déterrer couramment évaporé de à elles déploiements d’instruction procédural comme une promptitude et un passif d’analogie optimisés.

Dans lequel cet agence de blog, nous-mêmes avons montré combien il est conciliateur d’prétexter un noble modèle de charabia moyennant réagir aux questions chez ONNX en beaucoup que modèle individualisé DataRobot et quel nombre de performances d’analogie et d’valeur des avoir toi-même pouvez acquérir comme une compréhensible relâche de révolution. Avec prétexter ce alternance de devoir, toi-même pouvez repérer le bloc de aboutissement en aboutissement en deçà le sédiment de la corps DataRobot, de la sorte que de certains singulières didacticiels moyennant allouer aux constructeurs d’IA les possibilité de DataRobot.

Sanction

Configurez votre liste d’canevas et découvrez la kiosque DataRobot AI dès aujourd’hui

Commencez carrément

1 ONNX Runtime, optimisations de modèles

2 Microsoft, Organisation du modèle BERT moyennant les cœurs de microprocesseur Intel à l’bienfaisance du consignataire d’élaboration par avarie du runtime ONNX

3 Blog Twitter, Accentuer l’analogie CPU Manufacturer chez Google Cloud

4 Philipp Schmid, précipité les transformateurs de phrases comme Hugging Faciès Summum

5 Microsoft, Organisation du modèle BERT moyennant les cœurs de microprocesseur Intel à l’bienfaisance du consignataire d’élaboration par avarie du runtime ONNX

A discours de l’promoteur

Asli Sabanci Demiröz
Asli Sabanci Demiröz

Fondateur vital en instruction procédural, DataRobot

Aslı Sabancı Demiröz est architecte vital en instruction procédural comme DataRobot. Lui-même est propriétaire d’un BS en penchant télématique comme une obscure majeure en penchant du vaincu de l’Prytanée savoir-faire d’Istanbul. Ondulant au organisme du CTO, elle-même raffolé participer au cœur de la R&D de DataRobot moyennant approuver l’jeunesse. Sa affection réside chez l’lointain d’instruction en largeur et elle-même raffolé singulièrement mouvoir des intégrations puissantes pénétré les parturition de kiosque et d’précaution chez l’biotope ML, visant à retourner le globalité curé à la cumul des parties.

Rencontrez Asli Sabanci Demiröz

By nsmaat