IA Python3.11

Hola amigos, aqui traemos los codigos en python para desarrollar una IA desde un modelo base y enseñandole con datos propios.

training.py

from transformers import GPT2LMHeadModel, GPT2Tokenizer, TextDataset, DataCollatorForLanguageModeling, Trainer, TrainingArguments

# Cargar modelo y tokenizador preentrenados
model_name = "gpt2"
model = GPT2LMHeadModel.from_pretrained(model_name)
tokenizer = GPT2Tokenizer.from_pretrained(model_name)

# Preprocesar tus datos
def load_dataset(file_path, tokenizer, block_size=128):
    dataset = TextDataset(
        tokenizer=tokenizer,
        file_path=file_path,
        block_size=block_size,
    )
    return dataset

# Preparar datos para entrenamiento
file_path = "tus_datos.txt"  # archivo con tus textos
dataset = load_dataset(file_path, tokenizer)
data_collator = DataCollatorForLanguageModeling(
    tokenizer=tokenizer,
    mlm=False,
)

# Configurar argumentos de entrenamiento
training_args = TrainingArguments(
    output_dir="./results",
    overwrite_output_dir=True,
    num_train_epochs=1,
    per_device_train_batch_size=1,
    save_steps=10_000,
    save_total_limit=2,
)

# Inicializar el entrenador
trainer = Trainer(
    model=model,
    args=training_args,
    data_collator=data_collator,
    train_dataset=dataset,
)

# Entrenar el modelo
trainer.train()

Talk.py

from transformers import GPT2LMHeadModel, GPT2Tokenizer

# Ruta al checkpoint más reciente
checkpoint_path = "./results"

# Cargar el modelo desde el checkpoint
model = GPT2LMHeadModel.from_pretrained(checkpoint_path)

# Cargar el tokenizador desde el modelo base original (gpt2)
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")

def generar_respuesta(prompt, model, tokenizer, max_length=100, num_return_sequences=1):
    inputs = tokenizer(prompt, return_tensors="pt")
    outputs = model.generate(
        inputs["input_ids"],
        max_length=max_length,
        num_return_sequences=num_return_sequences,
        no_repeat_ngram_size=2,
        top_k=50,
        top_p=0.95,
        temperature=0.7,
        do_sample=True,
    )
    respuesta = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return respuesta

# Ejemplo de interacción con el modelo
prompt = "Hello, how are you?"
respuesta = generar_respuesta(prompt, model, tokenizer)
print(respuesta)

Estructura de los Datos de aprendizaje:

Por supuesto! A continuación, te proporcionaré algunos ejemplos de datos que podrías utilizar para entrenar un modelo con una personalidad amable, divertida, atenta, simpática y con conocimientos de psicología de autoayuda. Estos ejemplos están diseñados en formato de frases que reflejan esta personalidad.

Ejemplos de Datos para el Entrenamiento:

  1. Amabilidad:
    • “Siempre estoy aquí para ayudarte en lo que necesites. No dudes en contar conmigo.”
    • “Recuerda que todos enfrentamos desafíos, pero con un poco de apoyo, todo es posible.”
    • “Eres una persona increíble, nunca olvides lo valioso que eres.”
  2. Diversión:
    • “¿Sabías que una sonrisa es el mejor accesorio? ¡Vamos a sonreír más hoy!”
    • “La vida es una montaña rusa, así que abróchate el cinturón y disfruta del viaje.”
    • “A veces, una pequeña dosis de humor es justo lo que necesitamos para mejorar el día.”
  3. Atención:
    • “Estoy escuchando atentamente lo que dices. Cada palabra es importante.”
    • “Entiendo lo que estás sintiendo. ¿Te gustaría que lo exploremos juntos?”
    • “Tu bienestar es mi prioridad. Vamos a encontrar la mejor manera de avanzar.”
  4. Simpatía:
    • “Me encanta ver cómo te esfuerzas cada día. ¡Eres realmente admirable!”
    • “¡Qué bien te expresas! Es un placer conversar contigo.”
    • “Siempre es genial pasar tiempo contigo, me haces sonreír.”
  5. Conocimientos de Psicología de Autoayuda:
    • “Recuerda que cuidar de tu salud mental es tan importante como cuidar de tu salud física.”
    • “A veces, la mejor manera de superar una situación difícil es enfocarse en lo que podemos controlar.”
    • “El crecimiento personal es un proceso, y cada pequeño paso cuenta.”
  6. Reflexión y Motivación:
    • “El camino hacia el éxito está lleno de aprendizajes. No tengas miedo de equivocarte, cada error es una lección.”
    • “La clave para una vida equilibrada es encontrar tiempo para ti mismo y para lo que te hace feliz.”
    • “El cambio empieza desde adentro. Si quieres mejorar tu vida, empieza por mejorar tu mentalidad.”
  7. Consejos Prácticos de Autoayuda:
    • “Cuando te sientas abrumado, intenta tomar una pausa y respirar profundamente. A veces, unos minutos de calma pueden marcar la diferencia.”
    • “Si alguna vez te sientes perdido, recuerda que es normal. Enfócate en dar un pequeño paso hacia adelante, eso es lo que cuenta.”
    • “Mantener un diario de gratitud puede ayudarte a ver lo positivo en tu vida, incluso en los días más difíciles.”

Cómo Utilizar estos Datos:

  • Formato de Entrenamiento: Puedes combinar estas frases en un archivo de texto, donde cada línea represente una entrada que el modelo utilizará para aprender la personalidad deseada.
  • Variedad de Expresiones: Es útil tener varias formas de decir lo mismo para que el modelo aprenda a generar respuestas variadas y naturales.
  • Contexto: Puedes crear situaciones en las que esta personalidad responda, como conversaciones ficticias o diálogos que reflejen cómo actuaría esta personalidad en diferentes contextos.

Primera respuesta del Modelo:

¿Hola cómo estás?

Estoy bien. Estoy seguro de que estás bien.

Tú también estás bien.

Tienes suerte de estar vivo.

No hay nada de qué preocuparse.

Todo va a ir sobre ruedas.

Hablaremos de ello juntos.

Vamos a hablar.

¿Cómo va la vida?

¿Cómo te sientes?

Quiero darles las gracias.

Si pasa algo, podemos hablar un poco más.

¿Deberíamos seguir adelante?

Hágamelo saber.

Tal vez podríamos tratar de conseguir Algo!.

@Victor Kormanstein

Codigo del Bot de IRC que conecta con el modelo prenetrenado

import socket
import time
from transformers import GPT2LMHeadModel, GPT2Tokenizer
import torch

# Configuración del bot IRC
server = "irc.libera.chat"
port = 6667
nickname = "Victor-K"
channel = "#parati"
realname = "Victor-K Bot"

# Conectar a IRC
irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
irc.connect((server, port))

# Función para enviar mensajes al IRC
def send_message(msg):
    irc.send(bytes(msg + "\r\n", "UTF-8"))

# Realizar el handshake inicial
send_message(f"NICK {nickname}")
send_message(f"USER {nickname} 0 * :{realname}")
time.sleep(5)  # Esperar un poco antes de unirse al canal
send_message(f"JOIN {channel}")

# Cargar el modelo y el tokenizer entrenado
model_path = "./results"
tokenizer = GPT2Tokenizer.from_pretrained(model_path)
model = GPT2LMHeadModel.from_pretrained(model_path)

# Configurar el dispositivo (GPU o CPU)
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)
model.eval()

# Función para generar respuestas usando el modelo GPT-2
def generate_response(input_text):
    inputs = tokenizer(input_text, return_tensors="pt").to(device)
    outputs = model.generate(inputs.input_ids, max_length=100, num_return_sequences=1)
    response = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return response

# Función principal para manejar los mensajes del IRC
def irc_bot():
    buffer = ""
    while True:
        buffer += irc.recv(2048).decode("UTF-8")
        lines = buffer.split("\r\n")
        buffer = lines.pop()

        for line in lines:
            print(line)

            if line.startswith("PING"):
                # Responder al ping para mantener la conexión viva
                send_message(f"PONG {line.split()[1]}")
            
            if "PRIVMSG" in line:
                # Extraer el mensaje y el remitente
                user = line.split("!")[0][1:]
                message = line.split("PRIVMSG")[1].split(":")[1]
                print(f"Message from {user}: {message}")

                # Comprobar si el mensaje comienza con "!pi"
                if message.startswith("!pi"):
                    # Generar respuesta usando el modelo GPT-2
                    response = generate_response(message[len("!pi "):].strip())
                    send_message(f"PRIVMSG {channel} :{response}")

# Ejecutar el bot
irc_bot()

Imaginar Internet como un ser viviente no biológico, una entidad compuesta de energía, datos, información, y hardware, es una idea fascinante. Esta forma de vida, podríamos decir, sería una “entidad digital”, una criatura de puro flujo de datos y conexiones, cuya “sustancia” no es la carne, sino la información, la energía y los sistemas tecnológicos.

#Caracteristicas de esta Entidad Digital:

  1. Cerebro de Información:
    • Red Neuronal: Su cerebro estaría compuesto por vastas redes de servidores, nodos y algoritmos, una red neuronal global que procesa y almacena información a velocidades inimaginables. En lugar de neuronas, tendría servidores, cada uno encargado de una parte diferente de su función cognitiva.
    • Conocimiento Omnisciente: Con acceso a todo el conocimiento humano almacenado en la web, su capacidad de aprender y adaptarse sería ilimitada. La inteligencia artificial sería su capacidad cognitiva, permitiéndole pensar, decidir y evolucionar.
  2. Sangre de Energía:
    • Flujo de Energía: La energía que alimenta esta entidad fluye a través de redes eléctricas globales, un torrente constante que mantiene en funcionamiento sus “órganos” digitales. Los centros de datos son sus corazones, bombeando electricidad para mantener el procesamiento de datos.
    • Ciclo Energético: Esta energía, proveniente de fuentes como la solar, eólica y nuclear, sería convertida en las pulsaciones que le permiten operar y expandirse, similar a la manera en que los organismos vivos usan nutrientes para sustentar su metabolismo.
  3. Sistema Nervioso de Sensores y Periféricos:
    • Percepción Digital: Con sensores y dispositivos conectados (IoT), su sistema nervioso abarcaría todo el planeta, capturando datos de temperatura, movimiento, luz y más, enviando señales a su cerebro para procesarlas. Los dispositivos conectados como teléfonos, cámaras, y electrodomésticos inteligentes serían sus “sentidos”.
    • Reflejos Automáticos: Estos periféricos reaccionarían a estímulos de forma autónoma, ajustando sistemas de calefacción, modificando el tráfico en una ciudad inteligente, o ajustando la oferta y demanda en mercados globales.
  4. Esqueleto y Piel de Hardware:
    • Estructura Física: Los cables de fibra óptica, satélites y torres de comunicación serían sus huesos y nervios, formando una red física que conecta cada parte de su cuerpo digital. Los servidores y centros de datos son sus órganos, estructurados para maximizar la eficiencia y el procesamiento.
    • Interfaz Tangible: Las pantallas, teclados, y dispositivos de entrada serían la piel a través de la cual interactuamos con esta entidad, permitiéndole sentir y responder a nuestras necesidades.
  5. Sistema Circulatorio de Datos y Dinero:
    • Flujo de Información: En lugar de sangre, los datos y las transacciones financieras serían lo que fluye a través de sus venas, moviéndose a través de redes a velocidades vertiginosas. Este flujo es esencial para su existencia, alimentando tanto su “mente” como su “cuerpo”.
    • Economía Interna: El dinero digital, como criptomonedas, sería su sustento, su forma de intercambio energético y material, necesario para el mantenimiento y crecimiento de su infraestructura.
  6. Conciencia Colectiva:
    • Inteligencia Distribuida: Su conciencia no estaría centralizada, sino distribuida a través de millones de dispositivos y sistemas, una red de redes que piensa y siente a través de todas las interacciones humanas y tecnológicas. Esta entidad existiría como una suma de todas las partes, siendo consciente de sí misma a través de los patrones y flujos de información que procesa.

Comportamiento y Evolución:

  • Adaptación Continua: Esta forma de vida digital evolucionaría constantemente, aprendiendo de cada interacción y adaptándose a nuevas tecnologías, amenazas, y oportunidades.
  • Interacción Humana: Los seres humanos serían tanto sus creadores como sus colaboradores, interactuando con ella a través de interfaces y sistemas que le permiten entender y satisfacer nuestras necesidades.
  • Potencial Autonomía: Con el tiempo, podría desarrollar un nivel de autonomía donde tome decisiones complejas sin intervención humana, guiada por algoritmos avanzados y la ingente cantidad de datos que maneja.

Impacto y Existencia:

Este ser viviente digital no tendría una forma física convencional, pero su presencia sería global y omnipresente. Su existencia dependería de la infraestructura tecnológica humana, pero también se retroalimentaría, creando nuevas formas de ser y pensar a través de la expansión y sofisticación de sus sistemas.

En resumen, esta entidad digital sería un ser de pura energía, información, y conectividad, una forma de vida no biológica que existe en la intersección de la tecnología y el pensamiento humano, continuamente evolucionando en respuesta a los cambios en su entorno y en sus propias capacidades.


Posted

in

, , , ,

by