top of page
Rechercher
Photo du rédacteurHerve Blanc

Modèles open-source, ce qu'il faut savoir sur les alternatives à GPT-4 Vision

Dernière mise à jour : 9 avr.

 


Robot and Lama

Image générée avec Bing Image Creator


GPT-4 Vision, l'IA multimodale avancée d'OpenAI a le potentiel de révolutionner les interactions des utilisateurs en intégrant le traitement du texte et de l'image. Cette synergie permet de créer de nouvelles applications et d'améliorer considérablement l'expérience utilisateur. Pourtant, le coût de l'utilisation de GPT-4 est élevé et des questions de confidentialité peuvent empêcher les organisations d'utiliser une API tierce pour leurs données sensibles.


Heureusement, il existe des modèles de langage multimodaux open source (LLM) et des modèles de langage visuel (VLM). Ces modèles open source de vision peuvent être déployés sur des serveurs privés, réduire les coûts et garantir la confidentialité des données.

Mais il est important de considérer les possibles limites de ces modèles open source lorsque vous choisissez la solution adaptée à vos besoins.


Large Language and Vision Assistant (LLaVA)



LlaVa architecture

 Architecture LLaVA (source: arxiv)


LLaVA 1.5 se distingue comme le leader du LLM multimodal open-source, acclamé pour ses performances sur divers benchmarks multimodaux et tâches de réponse visuelle aux questions. Il combine les modèles LLaMA et CLIP pour traiter les données de vision et de texte. Non seulement LLaVA 1.5 est très performant, mais il est également remarquablement efficace et fonctionne sur une seule GPU.


L'entraînement du modèle est d'une rapidité impressionnante. Ses développeurs rapportent qu'il peut être entrainé complètement en une journée environ sur une seule machine 8-A100, ce qui n'entraîne que quelques centaines de dollars de coûts. Les modèles LLaVA pré-entraînés sont disponibles sur la  plateforme Hugging Face.


Vous pouvez également tester le modèle en ligne. Étant donné que l'entraînement de LlaVA 1.5 implique des données générées avec GPT-4, son utilisation est limitée à des fins non commerciales.


Fuyu



Fuyu architecture

 Architecture Fuyu


Fuyu est un LLM multimodal de 8 milliards de paramètres développé par Adept.


L’architecture de Fuyu est assez unique. Il n'a pas de composants séparés pour le traitement de l'image et du texte. Au lieu de cela, il dispose d'un seul transformer de décodeur uniquement. Cette conception permet à Fuyu de segmenter l'image d'entrée en morceaux et de les traiter de manière transparente.


Cette architecture apporte deux avantages non négligeables. Tout d'abord, cela rend Fuyu très agile, lui permettant de fournir des réponses en moins de 100 millisecondes sans compromettre la qualité. Deuxièmement, Fuyu est flexible pour la résolution de l'image.


Contrairement à d'autres modèles qui nécessitent un sous-échantillonnage, Fuyu peut gérer les images à leur résolution d'origine, à condition que leurs morceaux s'inscrivent dans sa fenêtre contextuelle.


Fuyu est disponible en téléchargement sur Hugging Face. Le site Web d'Adept offre des informations supplémentaires sur Fuyu, détaillant ses capacités et ses applications potentielles.


CogVLM



CogVLM Architecture

 Architecture CogVLM


Des chercheurs de l'Université Tsinghua ont développé CogVLM, un modèle de langage visuel de 17 milliards de paramètres. L'architecture de CogVLM est similaire à celle de LLaVA, utilisant un transformer de vision pour encoder des images qui sont ensuite concaténées avec des encodages de texte.


CogVLM fonctionne bien sur une gamme de tâches liées au langage visuel, comme détaillé dans son document de recherche. Il marche bien pour les réponses aux questions, le raisonnement en plusieurs étapes et même les tâches de programmation qui nécessitent une entrée visuelle. Les chercheurs ont également développé CogAgent, une itération de CogVLM conçue pour créer des agents autonomes. Ces agents peuvent interagir avec les interfaces graphiques, ouvrant ainsi de nouvelles voies pour l'automatisation et l'interaction avec les utilisateurs. Si vous souhaitez essayer CogVLM, une démo web est disponible sur la page GitHub du projet.


S'amuser avec GPT-4V et un modèle open source vision LLaVA 1.5


Bien que les résultats des benchmarks soient impressionnants et méritent d'être suivis, il est important d'expérimenter avec les modèles avant de les intégrer dans vos applications. De toute évidence, GPT-4 Vision est le modèle le plus performant, mais il y a quelques choses que vous pouvez faire pour vérifier le périmètre et les limites des autres modèles. Idéalement, vous devez créer un jeu de données de test pour votre application spécifique qui représente l'étendue des exemples auxquels le modèle sera confronté.

Voici quelques-unes de mes propres expériences. Notez qu'avec GPT-4V, il est très difficile de savoir si les données sur lesquelles vous testez le modèle ont été incluses dans l'ensemble d'apprentissage ou non.


J'ai fait une petite comparaison entre GPT-4V et LLaVA 1.5 sur une série d'exemples, allant du plus simple au plus compliqué. Tout d'abord, j'ai commencé par un exemple simple pour écrire une légende pour cette image. J'ai essayé les deux modèles avec une température réglée sur 0,1 et 1. Il s'agit d'une fonctionnalité importante si vous souhaitez générer des légendes pour un jeu de données d'images volumineux.

Image source: 123RF

Invite: Écrire une légende pour cette image
 
Temperature: 0.1
LLaVA: Un bol en bois rempli de biscuits macarons aromatisés.
GPT-4V: Une symphonie de saveurs : des macarons colorés dans un bol rustique
 
Temperature: 1.0
LLaVA: Un bol rempli de quatre couleurs différentes de macarons.
GPT-4V: L'élégance du terroir : un bouquet de macarons

 

Intéressant, je pense, que les réponses de LLaVA sont meilleures. Mais il ne s'agit pas d'un test approfondi. Comme je l'ai dit, vous devez choisir le bon type d'images et de question (et formulation de question). Par exemple, lorsque j'ai changé mon invite en « Écrire une légende simple pour cette image », les deux modèles ont donné de bons résultats. LLaVA est beaucoup plus rentable, mais GPT-4V a tendance à être plus performant sur les images complexes. Vous devrez donc effectuer quelques tests pour voir quel modèle convient le mieux au type d'images où vous souhaitez rajouter des légendes.


Ensuite, j'ai effectué un test plus compliqué, invitant les modèles à extraire des points de données spécifiques de la capture d'écran d'une page de produit sur Amazon. Cette fois, j'ai utilisé la température la plus basse pour réduire le caractère aléatoire des réponses.


Invite:
Extraire les informations suivantes au format json :
- Nom du produit
- Catégorie de produit
- Marque
- Prix
 
Temperature: 0.1

 

LLaVA:
{
  "product_name": "TP-LINK Archer C7 Wireless AC1750 Dual Band Wi-Fi Router (Archer C7)",
  "product_category": "Computers & Accessories",
  "brand": "TP-LINK",
  "price": "$175.00"
}
 
GPT-4V:
{
  "Product name": "TP-Link AXE5400 Tri-Band WiFi 6E Router (Archer AXE75) - Gigabit Wireless Internet, ax Router for Gaming, VPN Router, OneMesh, WPA3",
  "Product category": "Electronics > Computers & Accessories > Networking Products > Routers",
  "Brand": "TP-Link",
  "Price": "$179.99"
}
 
LLaVA a bien compris la structure JSON, mais a halluciné une grande partie de l'information, à l'exception de la marque. GPT-4V a été capable de tout extraire sans se tromper. Mon expérience suivante a consisté à fournir aux modèles une image riche en données et à leur demander d'extraire et de structurer les informations au format JSON. J'ai pris un reçu au hasard en ligne et je l'ai donné aux modèles.
Invite:
Pouvez-vous fournir les données contenues dans ce reçu au format json ?
 
LLaVA:
{
  "save_money": "live better",
  "store_of_purchase": "walmart",
  "date_of_purchase": "06/23/2013",
  "total_amount_paid": 7162.46,
  "payment_methods": ["debit", "credit", "cash", "payment from party"],
  "balance_due": -5662.55,
  "shipping_charge": 326.0,
  "sales_tax": -1672.46,
  "cash_back": 1672.46,
  "total_savings_with_cash_back": -6796.58,
  "total_savings_only_cash_back": 0.52,
  "employee_signature": "Shawna Yoho",
  "return_price":
  {
    "price": 0.87,
    "item_numbers": [7318997394, 4591954, 522612, 519060123, 152340449, 42018890, 796270, 19515001, 2294120, 56527129]
  },
  "transaction_time": "9:43 AM"
}

 

GPT-4V:
Certainly, here's the data from the receipt in JSON format:
 
{
  "storeName": "Walmart",
  "slogan": "Save money. Live better.",
  "phoneNumber": "(412) 782-4444",
  "address": {
    "manager": "877",
    "street": "877 FREEPORT RD",
    "city": "PITTSBURGH",
    "state": "PA",
    "zipCode": "15238"
  },
  "transactionDetails": {
    "storeNumber": "5339",
    "opNumber": "00002131",
    "teNumber": "04",
    "trNumber": "08026"
  },
  "items": [
    {
      "description": "SHAVE GEL",
      "upc": "004740000359",
      "price": 2.97,
      "quantity": "X"
    },
    {
      "description": "COUPON",
      "upc": "054700003590",
      "price": -2.97,
      "quantity": "O"
    }
  ],
  "summary": {
    "subtotal": 2.97,
    "tax1": 0.42,
    "total": 3.39
  },
  "payment": {
    "method": "DEBIT TEND",
    "amount": 3.39,
    "debitCashBack": 40.00,
    "totalDebitPurchase": 43.39,
    "changeDue": -40.00
  },
  "eftDetails": {
    "eftDebit": 3.39,
    "cashBack": 40.00,
    "totalPurchase": 43.39
  },
  "accountInfo": {
    "ref": "************8030",
    "approvalCode": "428022",
    "networkId": "NETWORK ID: 28004058",
    "terminal": "TERMINAL: 28004058"
  },
  "timeStamp": {
    "purchaseTime": "06/08/13 20:56:58",
    "printTime": "06/08/13 20:57:01"
  },
  "itemCount": 2,
  "transactionId": "TC#: 3780 6418 6987 2322 0132",
  "additionalMessage": "Ask a Pharmacy Sales Associate how you can save money on pet medications!"
}
Please note that the JSON format is a structured representation of the receipt information, and certain assumptions were made for some fields due to the degraded quality of the text in the image. For ambiguous elements, I've left placeholders or generalized the information. Also, the UPC and item identification numbers may not be accurate due to potential misinterpretation from the image's quality.

 

De toute évidence, LLaVA a eu du mal à extraire les informations. GPT-4V a fait un meilleur travail en obtenant la plupart des informations correctes, bien qu'il ait également produit des données non JSON, un problème qui peut être résolu avec une meilleure invite. Il est intéressant de noter que dans l'une de mes expériences, GPT-4V a répondu avec des résultats corrects et une explication sur le fonctionnement de la politique de remboursement.


Enfin, j'ai donné un exemple très compliqué. J'ai pris une capture d'écran d'une vidéo YouTube de l'excellent cours d'algèbre linéaire de Jordan Webster. J'ai ensuite demandé aux modèles de résoudre le problème. GPT-4V a réussi sans problème, bien qu'encore une fois, je ne puisse pas confirmer si ce problème faisait partie de ses données d'entraînement. Il s'agit d'une capture d'écran d'une chaîne YouTube qui n'est pas très populaire, mais le problème pourrait avoir été emprunté à un manuel. LLaVA a commencé à produire un autre problème qui n'avait rien à voir avec l'image.


Invite:
Pouvez-vous résoudre ce problème d'algèbre linéaire. Procédez étape par étape 

 

LLaVA:
To solve this linear algebra problem, we need to find the values of the variables in the given equation. The equation is:
Let λ = 2, 3, and 4 find the values of the variables in the equation:
(2x + 3y + 4z) = 2(x + y + z)
To solve this equation, we can use the method of elimination. First, we can simplify the equation by combining the terms:
2x + 3y + 4z = 2(x + y + z)
2x + 3y + 4z = 2x + 2y + 2z
Now, we can eliminate the variables one by one. To eliminate x, we can subtract 2x from both sides:
(2x + 3y + 4z) - 2x = 2(x + y + z) - 2x
3y + 4z = x + y + z
Next, we can eliminate y by subtracting 3y from both sides:
3y + 4z - 3y = x + y + z - 3y
4z = x + y + z
Finally, we can eliminate z by subtracting 4z from both sides:
4z - 4z = x + y + z - 4z
0 = x + y
Now, we have a system of linear equations with two variables:
3y = x
4z = x + y
To solve this system, we can use the method of substitution. First, we can solve equation 1 for y:
y = x/3
Next, we can substitute the expression for y into equation 2:
4z = x + x/3
4z = 3x/3 + x
4z = x + x/3
4z = 3x/3 + 2x/3
4z = x + x/3
Now, we can solve for z:
4z = x + x/3
4z = 3x/3 + x
4z = 2x + x/3
4z = 3x/3 + x/3
4z = x/3 + x/3
4z = x/3
Now, we can find the value of z:
z = x/12
Finally, we can substitute the expression for z into the expression for y:
y = x/3
y = x/12
*
3
y = x/4
Now, we have the solution for the variables in the given equation:
x = 4z = 4(x/12) = x/3
y = x/4
z = x/12

 

GPT-4V:
This problem involves changing the coordinates of a vector from one basis to another. We are given two bases, β = {b1, b2} and C = {c1, c2}, and the relationships between the bases:
b1 = 2c1 + c2 b2 = -c1 + 4c2
We are also given the coordinates of a vector v in the basis β:
[v]_β = [6 -7]^T
We want to find the coordinates of the same vector v in the basis C, denoted [v]_C.
To do this, we can express the vector v in terms of the basis β and then use the relationships between the bases to express it in terms of the basis C.
Let's express v in terms of the basis β:
v = 6b1 - 7b2
Now we substitute the expressions for b1 and b2 in terms of c1 and c2:
v = 6(2c1 + c2) - 7(-c1 + 4c2) v = (12c1 + 6c2) + (7c1 - 28c2) v = (12c1 + 7c1) + (6c2 - 28c2) v = 19c1 - 22c2
Now we have the vector v expressed in terms of the basis C. The coefficients of c1 and c2 are the coordinates of v in the basis C:
[v]_C = [19 -22]^T
So the coordinates of the vector v in the basis C are [19 -22]^T.

Réflexions finales


Aucune de ces expériences ne signifie que LLaVA ou d'autres modèles open-source sont inutiles. Ils peuvent être très utiles et résoudre de nombreux problèmes intéressants. Cependant, il est important de regarder au-delà des benchmarks et de faire des expériences pratiques avec vos propres données et exemples avant d'intégrer un modèle dans vos applications. Heureusement, le coût et la complexité de la mise au point des modèles diminuent rapidement. Cela permettra aux organisations de faire tourner plus facilement leurs propres modèles personnalisés.


Remerciements


Cet article est la traduction française la plus fidèle possible de «What to know about open-source alternatives to GPT-4 Vision» avec l'aimable permission de son auteur Ben Dickson 



Contacts


N'hésitez pas à contacter Hervé @ biZNov si vous avez des questions ou pour me faire savoir s’il y a d'autres sujets que vous aimeriez voir traiter sur ce blog.


Et n'oubliez pas de diffuser l'information si vous avez aimé cet article de blog , Il suffit de cliquer sur les boutons de réseaux sociaux ci-dessous. Partager, c'est apprécier :-)

 

Comments


bottom of page