Intégrations de l'encodeur pour Object2Vec - Amazon SageMaker

Intégrations de l'encodeur pour Object2Vec

Optimisation du GPU : intégrations de l'encodeur

Une intégration est un mappage d'objets discrets, tels que des mots, sur des vecteurs de nombres réels.

La mémoire GPU étant faible, la variable d'environnement INFERENCE_PREFERRED_MODE peut être spécifiée pour déterminer si les Format de données pour l'inférence d'Object2Vec ou le réseau d'inférence d'intégration de l'encodeur doit être chargé dans le GPU. Si la majeure partie de votre inférence est destinée aux intégrations de l'encodeur, spécifiez INFERENCE_PREFERRED_MODE=embedding. Voici un exemple Batch Transform d'utilisation de 4 instances p3.2xlarge optimisé pour l'inférence d'intégration de l'encodeur :

transformer = o2v.transformer(instance_count=4, instance_type="ml.p2.xlarge", max_concurrent_transforms=2, max_payload=1, # 1MB strategy='MultiRecord', env={'INFERENCE_PREFERRED_MODE': 'embedding'}, # only useful with GPU output_path=output_s3_path)

Entrée : intégrations de l'encodeur

Content-type: application/json; infer_max_seqlens=<FWD-LENGTH>,<BCK-LENGTH>

Où <FWD-LENGTH> et <BCK-LENGTH> sont des entiers inclus dans la plage [1 5000] qui définissent les longueurs de séquence maximales pour l'encodeur avant et arrière.

{ "instances" : [ {"in0": [6, 17, 606, 19, 53, 67, 52, 12, 5, 10, 15, 10178, 7, 33, 652, 80, 15, 69, 821, 4]}, {"in0": [22, 1016, 32, 13, 25, 11, 5, 64, 573, 45, 5, 80, 15, 67, 21, 7, 9, 107, 4]}, {"in0": [774, 14, 21, 206]} ] }

Content-type: application/jsonlines; infer_max_seqlens=<FWD-LENGTH>,<BCK-LENGTH>

Où <FWD-LENGTH> et <BCK-LENGTH> sont des entiers inclus dans la plage [1 5000] qui définissent les longueurs de séquence maximales pour l'encodeur avant et arrière.

{"in0": [6, 17, 606, 19, 53, 67, 52, 12, 5, 10, 15, 10178, 7, 33, 652, 80, 15, 69, 821, 4]} {"in0": [22, 1016, 32, 13, 25, 11, 5, 64, 573, 45, 5, 80, 15, 67, 21, 7, 9, 107, 4]} {"in0": [774, 14, 21, 206]}

Dans ces deux formats, vous spécifiez un seul type d'entrée, “in0” ou “in1.” Le service d'inférence appelle alors l'encodeur correspondant et génère les intégrations de chacune des instances.

Sortie : intégrations de l'encodeur

Content-type : application/json

{ "predictions": [ {"embeddings":[0.057368703186511,0.030703511089086,0.099890425801277,0.063688032329082,0.026327300816774,0.003637571120634,0.021305780857801,0.004316598642617,0.0,0.003397724591195,0.0,0.000378780066967,0.0,0.0,0.0,0.007419463712722]}, {"embeddings":[0.150190666317939,0.05145975202322,0.098204270005226,0.064249359071254,0.056249320507049,0.01513972133398,0.047553978860378,0.0,0.0,0.011533712036907,0.011472506448626,0.010696629062294,0.0,0.0,0.0,0.008508535102009]} ] }

Type de contenu : application/jsonlines

{"embeddings":[0.057368703186511,0.030703511089086,0.099890425801277,0.063688032329082,0.026327300816774,0.003637571120634,0.021305780857801,0.004316598642617,0.0,0.003397724591195,0.0,0.000378780066967,0.0,0.0,0.0,0.007419463712722]} {"embeddings":[0.150190666317939,0.05145975202322,0.098204270005226,0.064249359071254,0.056249320507049,0.01513972133398,0.047553978860378,0.0,0.0,0.011533712036907,0.011472506448626,0.010696629062294,0.0,0.0,0.0,0.008508535102009]}

La longueur du vecteur de la sortie des intégrations par le service d'inférence est égale à la valeur de l'un des hyperparamètres, que vous spécifiez au moment de l'entraînement : enc0_token_embedding_dim, enc1_token_embedding_dim ou enc_dim.