Crear mi propia IA entrenada con info que le de?


Dark

🔥root313🔥
Staff
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder Pro
Noder
Una vez vi que XQC tiene una IA que responde a preguntas de los subs, esta IA está entrenada para responder más o menos como si fuera el propio XQC, entonces, yo quiero meterle eso al bot de Discord del Azote entrenado con toda la info de la Guia del Noder y posts de estos que he hecho de cosas del foro.

Alguien sabe alguna web? O incluso programa para Linux, por ahí anda rulado un ChatGPT desbloqueado descargable, si consigo descargarlo en un Linux podría hacer peticiones al programa con comandos a través del bot de Discord, y sino una API.
 

Dark

🔥root313🔥
Staff
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder Pro
Noder

_EzzyS

Miembro muy activo
Si te refieres a entrenar un LLM (un modelo de lenguaje) como que no, no solo porque con la guia del noder y todos los posts que hay en el foro serían muy pocos datos para entrenar un modelo así, pero además, si tuvieras la cantidad de datos suficientes, tendrías que pagar o montar una infraestructura tocha y tardaría semanas/dias. Te recomiendo que busques LLMs ya entrenados y busques cómo hacerles un fine-tuning con tus datos. Busca tipo: "fine-tuning llama2" por ejemplo. Te dejo dos videos que acabo de encontrar haciendo una búsqueda rápida, pero vamos, a partir de aquí ya es buscar un video bueno que lo explique bien y sencillo:

*el tema de LLMs y tal es un coñazo yo te aviso xdd
 
  • Like
Reacciones : Dark

pvtoari

Attempt to call a nil value
Noderador
Nodero
Noder
Yo estoy en un discord que tienen a MEE6 tuneado para responder como un chatbot medieval xD indagaré en el tema y te digo
 

RubRub

Miembro muy activo
Nodero
Noder
Lo mejor que puedes hacer es usar la API de ChatGPT e incluir la información que quieras en el System Context, olvidate de hacer fine-tuning porque no son suficientes datos para que notes una diferencia entre el modelo original y el reentrenado.
 

RikoteMaster

Miembro muy activo
Yo estoy bastante puesto en este tema, he estado realizando proyectos de investigación de uso de LLMS para análisis de lenguaje. Actualmente, se utiliza un método con SFTTrainer (https://towardsai.net/p/machine-learning/fine-tuning-a-llama-2-7b-model-for-python-code-generation) yo he estado prácticamente usando este codigo para mi objetivo y he terminado mejorando bastante el estado del arte. El flujo de trabajo es el siguietne:

1. Tienes que tener una buena gráfica, aunque actualmente y si buscas un poco métodos de optimización de entreenamietno he leido y visto que se podía llegar a entrenar en un google collab, pero de eso no estoy seguro, para este metodo me han hecho falta 24 gb de vram aprox.

2. Selección del modelo. Últimamente hay una gran cantidad de modelos open source, el más efectivo en cuanto a tamaño de parámetros es el misrtal-7b-chat, una empresa pequeña francesa.

3. Tienes que crear la base de datos y subirla a huggingface que es lo más comodo. Es decir tiene que haber un ejemplo de las peticiones y como quieras que las responda, es dificil que sepa como hacerlo por arte de magia.
O puedes probar a directamente no entrenarlo y jugar con el prompt.

4. Creación de la base de datos y/o prompting.
Toda LLM tiene una estructura con la que es más funcional, es decir, un formato y tu tienes que adaptarlo a tu use case. En mi caso era algo así como "<s> [INST] Now you are going to classify the next sentence into these emotions (anger, joy...) Sentence:{Oración a clasificar} [/INST] Aqui lo que quieres que responda"
Esto sería un dataset para entrenamiento, si solo quieres hacer inferencia no sería necesario añadir la ultima parte, y si te interesa te explico también como hacerlo.

5. Entrenamiento, ejecutar el código, con distintos parámetros, con estos modelos aconsejo un numero de epocas grande porque tarda bastante en aprender bien la nueva tarea

6. Guardarlo y usaralo :)) Aquí es más ajetreo porque tienes que jugar con guardarlo en huggingface, usar las pipelines de este paquete de python etccc

Espero que te haya servido de ayuda y cualquier cosa pregunta sin problema, es un proceso largo entrenar una LLM sobre todo por el hecho de conseguir un buen dataset, que bueno, no estás entrenando estas relaizando un fine-tunning, que sería algo como adaptar el modelo a tu use case como he dicho antes.
 
  • Like
Reacciones : Dark

RikoteMaster

Miembro muy activo
La parte de hacerlo por arte de magia me ha quedado un poco mal ajajjaja, pero básicamente sería hacer inferencia directamente sobre el modelo, es decir, como si hicieras una petición a chatgpt.

No he mirado nada el API de chatgpt ya que para mi caso la privacidad de los datos es importante, entonces no se la rentabilidad de usar la API en comparación de tener un servidor ejecutando el modelo, pero entrenado y cargado los modelos no ocupan más de 14 gigas de vram (que se dice pronto ajjajajaj). Tendrías que tirar de AWS o algo del estilo de lo cual ya no tengo ni puta idea jajajaj
 

Dark

🔥root313🔥
Staff
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder Pro
Noder
Yo estoy bastante puesto en este tema, he estado realizando proyectos de investigación de uso de LLMS para análisis de lenguaje. Actualmente, se utiliza un método con SFTTrainer (https://towardsai.net/p/machine-learning/fine-tuning-a-llama-2-7b-model-for-python-code-generation) yo he estado prácticamente usando este codigo para mi objetivo y he terminado mejorando bastante el estado del arte. El flujo de trabajo es el siguietne:

1. Tienes que tener una buena gráfica, aunque actualmente y si buscas un poco métodos de optimización de entreenamietno he leido y visto que se podía llegar a entrenar en un google collab, pero de eso no estoy seguro, para este metodo me han hecho falta 24 gb de vram aprox.

2. Selección del modelo. Últimamente hay una gran cantidad de modelos open source, el más efectivo en cuanto a tamaño de parámetros es el misrtal-7b-chat, una empresa pequeña francesa.

3. Tienes que crear la base de datos y subirla a huggingface que es lo más comodo. Es decir tiene que haber un ejemplo de las peticiones y como quieras que las responda, es dificil que sepa como hacerlo por arte de magia.
O puedes probar a directamente no entrenarlo y jugar con el prompt.

4. Creación de la base de datos y/o prompting.
Toda LLM tiene una estructura con la que es más funcional, es decir, un formato y tu tienes que adaptarlo a tu use case. En mi caso era algo así como "<s> [INST] Now you are going to classify the next sentence into these emotions (anger, joy...) Sentence:{Oración a clasificar} [/INST] Aqui lo que quieres que responda"
Esto sería un dataset para entrenamiento, si solo quieres hacer inferencia no sería necesario añadir la ultima parte, y si te interesa te explico también como hacerlo.

5. Entrenamiento, ejecutar el código, con distintos parámetros, con estos modelos aconsejo un numero de epocas grande porque tarda bastante en aprender bien la nueva tarea

6. Guardarlo y usaralo :)) Aquí es más ajetreo porque tienes que jugar con guardarlo en huggingface, usar las pipelines de este paquete de python etccc

Espero que te haya servido de ayuda y cualquier cosa pregunta sin problema, es un proceso largo entrenar una LLM sobre todo por el hecho de conseguir un buen dataset, que bueno, no estás entrenando estas relaizando un fine-tunning, que sería algo como adaptar el modelo a tu use case como he dicho antes.
La parte de hacerlo por arte de magia me ha quedado un poco mal ajajjaja, pero básicamente sería hacer inferencia directamente sobre el modelo, es decir, como si hicieras una petición a chatgpt.

No he mirado nada el API de chatgpt ya que para mi caso la privacidad de los datos es importante, entonces no se la rentabilidad de usar la API en comparación de tener un servidor ejecutando el modelo, pero entrenado y cargado los modelos no ocupan más de 14 gigas de vram (que se dice pronto ajjajajaj). Tendrías que tirar de AWS o algo del estilo de lo cual ya no tengo ni puta idea jajajaj
A ver, que yo solo quiero meterle un pdf de 15 páginas jajaja, pensandolo bien, podría simplemente crear funciones del bot que salten a la que se diga una palabra relacionada con el tema y que pregunta si se refería a x tema, si el usuario dice que si, pues le explica la movida (con unos textos ya escritos, preparados para cada caso), no sería tanto trabajo, menos que creando esa IA de la forma que me has dicho xd.
 

RikoteMaster

Miembro muy activo
Vale vale jajajaj quizá me he cebado con la respuesta, pero como había leido por alguna que te habían pasado un video de entrenar un propio modelo pues pensaba q querías eso.


En este canal hay un montón de videos explicando como puedes llegar a hacer lo que quieres, suele usar un framewrok que se llama langchain que es bastante sencillo y además hay un montón de proyectos ejemplo, con esto no tiene porque resultarte dificil ya no sé la memoria gráfica que puedes llegar a necesitar pq no he hecho nada de esto
 

Rodkaiser

Rod de Lezo | Kaiser de Ovieco
Noderador
Nodero
Noder
Ya, con ChatGPT es tan fácil de hacer las peticiones metiendole en cada petición el contexto entero y luego la pregunta, pero quería algo más específico, pero si, seguramente opte por ChatGPT, supongo que no me darán por culo para hacer solicitudes API con una cuenta gratis.
Creo que era bard que te deja entrenarlo con tu información