Aller au menu du forum Aller au contenu du forum Aller à la recherche dans le forum
Logo Khaganat
Menu principal

L'IA Nextcloud avec LocalAI

shepeng

Récemment, je me suis amusé avec LocalAI sur mon instance Nextcloud perso. Voici les résultats de mon petit test.

Choix d'architecture

Je suis sur un test très provisoire. Étant donné que je n'ai aucune idée de la puissance de calcul nécessaire, et que mon serveur est un SBC ODroid HC2, j'ai décidé d'installer LocalAI sur mon PC.

Ensuite, je fais une redirection de port avec l'option -R de ssh, du port 8080 de mon PC vers le HC4 pour que nextcloud le voie en local.

Ce n'est évidemment pas viable en production.

Compilation

https://localai.io/basics/build/

J'ai tenté de compiler avec l'option permettant d'utiliser le modèle stablediffusion, mais sans succès. Après avoir buté sur une erreur lors de l'utilisation de la bibliothèque protobuf, que j'ai pu corriger, j'ai buté sur la bibliothèque opencv2 que je n'ai pas encore pu corriger. Sur debian, le paquet opencv2 n'est disponible que dans SID si j'ai correctement compris.

La correction du bug se fait en supprimant 'CONFIG REQUIRED' dans la commande find_package(Protobuf CONFIG REQUIRED) du fichier CMakeLists.txt lorsque c'était en erreur.

J'ai donc compilé sans cette fonctionnalité, et le modèle stable diffusion ne fonctionne pas sur mon test.

Une fois compilé, je lance à la main dans un terminal. Le service tourne sur le port 8080.

Configuration

Tout passe par des API et il faut utiliser curl : https://localai.io/models/

J'ai récupéré en local le dépôt de modèles, et j'intègre des modèles dans mon instance.

Les modèles fonctionnels sont : gpt4all-j, lunademo (le meilleur à mon goût), mpt-7b-chat

Whisper pour la transcription audio.

la commande pour les installer :

curl http://localhost:8080/models/apply -H "Content-Type: application/json" -d '{
     "url": "<MODEL_CONFIG_FILE>"
   }'
   

<MODEL_CONFIG_FILE> : c'est le chemin relatif vers le fichier yaml de description du modèle, précédé de

file://

Nextcloud

Dans Nextcloud, il faut activer l'application "OpenAI and LocalAI integration"

Ajouter une ligne au config.php : 'allow_local_remote_servers' ⇒ true,

Ensuite aller configurer dans "Comptes connectés" l'url de LocalAI : http://localhost:8080 et choisir un modèle par défaut.

Que ce soit d'un fichier Markdown ou d'une fenêtre de chat, taper / fait apparaître un menu avec des options pour ChatGPT qui vont interroger LocalAI.

Pour faire fonctionner le modèle whisper pour la reconnaissance vocale, j'ai dû le renommer en whisper-1 au lieu de whisper-base. J'ai fait ça dans son fichier yaml et j'ai ensuite relancé localai.

Je n'ai pour l'instant pas su faire fonctionner la génération d'images.

Quelques réponses

Pour le Fun

I'm doing well, thanks for asking. What about you?(GPT4all)

Quantum Theory is a branch of physics that studies the behavior and interactions between subatomic particles. It is based on the principles of quantum mechanics, which describe how particles can exist in multiple states simultaneously and interact with each other. The theory explains phenomena such as superposition, entanglement and wave-particle duality. It has been used to develop technologies such as transistors, lasers and computers. (GPT4all)

Quantum theory is a branch of physics that studies the behavior of matter and energy at the atomic and subatomic level. It is based on the principles of superposition and entanglement, which describe how particles can exist in multiple states simultaneously and how their properties can be correlated with each other even at great distances. Quantum theory has led to many important discoveries, including the development of new technologies such as transistors and lasers, as well as a deeper understanding of the fundamental nature of the universe. (lunademo)

La relativité restreinte est une théorie physique développée par Albert Einstein en 1905. Elle décrit la relation entre la vitesse de la lumière et la structure des systèmes de coordonnées dans l'espace et le temps. Dans cette théorie, Einstein montre que la vitesse de la lumière est constante pour tous les observateurs, quel que soit leur mouvement relatif par rapport à la source de la lumière. Cette théorie a eu un impact important dans la physique moderne, car elle a permis de résoudre un problème qui était resté ouvert depuis la théorie newtonienne de la gravitation (lunademo)

Invite de commande

écris moi en une phrase une idée pour une histoire

Résultat

"Un jour, une jeune femme apprend qu'elle a hérité d'une grande propriété dans les bois. Elle part immédiatement pour la visiter, mais elle se retrouve confrontée à une mystérieuse forêt qui semble avoir sa propre volonté. Elle découvre que les arbres ont des âmes et qu'ils sont capables de parler. Elle apprend également que la forêt est hantée par un esprit malin qui veut la faire disparaître. Pour survivre, elle doit apprendre à communiquer avec les arbres et à résister à l'esprit malin."(lunademo)

Temps de calcul

Une réponse à Quantum theory avec Gpt4All prend 4 processeurs pendant 40 secondes. Avec Lunademo : 30 secondes et 10 processeurs.

La réponse en français sur la relaticité restreinte avec lunademo prend 40 secondes et utilise 10 processeurs (threads).

Zatalyz

Les résultats sont assez bluffants, même si j'ai un peu de mal à voir la puissance du SBC ODroid HC2 (mais ça semble être un petit truc ?).

Les réponses ok, mais quelles étaient les questions ?  :D

Pour Nextcloud, c'est juste une interface pour papoter avec l'IA ou ça a des usages au sein de Nextcloud en plus ? J'ai du mal à voir en quoi l'IA peut être utile mais pas creusé les déclarations sur Nextcloud. Genre est-ce que ça me range/dérange mon bazar dans les dossiers ?  O:-)

Comment ça marche pour les modèles, si on veut ajouter nos propres sources ?

Par exemple je m'étais demandé ce que donnerais une IA nourrie uniquement aux romans. Lui donner à manger tous les bouquins élevés dans le domaine public, ceux sous licence libre, mais rien d'autre (même pas wikipédia). Est-ce qu'il y aurait assez de données pour qu'elle soit efficace, est-ce possible de faire ça, est-ce qu'elle écrirait le prochain goncourt, ou nous ferait l'histoire du petit pendo rouge avec le style de Baudelaire ? Et dans le cas des images, si on la nourrit avec des planches encyclopédiques/d'histoires naturelles, est-ce qu'on a une chance de lui faire générer les planches du blasa et autres plantes khanatiennes ?

shepeng

Les questions étaient : "How are you?", "explain quantum theory" et "explique moi la relativité restreinte".

localai tourne sur mon PC perso, pas sur le HC4. C'est un processeur ARM 64 bits, une SBC dédiée à l'hébergement web avec deux ports SATA. Mon PC par contre a un i7 avec 12 threads.

Nextcloud sert uniquement d'interface utilisation, d'ailleurs on peut interroger directement avec curl.

Je ne me suis pas du tout penché sur la génération de modèle, parce que si j'ai bien compris, c'est le genre de truc qui va prendre plusieurs semaines à minima sur mon PC. Ça me semble hors de portée pour l'instant, il va falloir attendre encore un ou deux ans.

shepeng

L'intérêt à terme pour khaganat, à mon avis, c'est d'avoir des PNJ crédibles pouvant papoter de tout et de rien avec les joueurs.

deed

Humm, ça m'intéresse et ça serait intéressant de le relier à XMPP pour "l'entraînement" sur un salon spécial.
En plus, mon serveur est vide, ça lui fera un peu d'exercice.

Zatalyz

Pour les pnj, il faudra tout de même pouvoir donner des règles à l'IA sur ce qu'elle a le droit d'aborder ou non suivant les "familles" de pnj. Et puis, forcément, les nourrir de discussions khantiques :D

Ce serait étrange qu'un ra puisse discuter de politique terrienne par exemple. Et un journalier d'Hoslet n'aura sans doute pas les mêmes centres d'intérêts qu'un pêcheur du Delta ou un noble de Vaiatua. Par ailleurs, un PNJ ne va pas se comporter de la même façon avec quelqu'un de son kagnivo, d'un kagnivo ennemi ou d'un kagnivo inconnu. Il faudra donc voir comment on peut donner des règles à l'IA suivant diverses conditions.

Cela pose peut-être aussi la question, sur les niveaux de réalité, d'à quel point on encourage des relations avec des IA. Question ouverte, je le précise, mais pas anodine :)




Licences Mentions légales Accueil du site Contact