[Inteligencia artificial] Chat de modelo grande de código abierto doméstico AquilaChat Comience rápidamente a comenzar con el combate real y la evaluación de efectos

[Inteligencia artificial] Chat de modelo grande de código abierto doméstico AquilaChat Comience rápidamente a comenzar con el combate real y la evaluación de efectos

Zen y el arte de la programación informática: conclusión de la evaluación: AquilaChat es similar a ChatGLM-6B en el nivel de escritura, pero la capacidad de AquilaChat para escribir código en múltiples lenguajes de programación aún es relativamente débil. .

El nivel de escritura del código de AquilaChat no es bueno (debería ser que el conjunto de datos del código no está lo suficientemente entrenado), y hacer preguntas técnicas (por ejemplo: usar golang para implementar el algoritmo de clasificación de burbujas) tendrá cierta probabilidad de informar un error:

 File "/home/me/ai/FlagAI/flagai/model/predictor/aquila.py", line 41, in aquila_generate
    next_token = sample_top_p(probs, top_p)
  File "/home/me/ai/FlagAI/flagai/model/predictor/aquila.py", line 84, in sample_top_p
    next_token = torch.multinomial(probs_sort, num_samples=1)
RuntimeError: probability tensor contains either `inf`, `nan` or element < 0):

ingresar:

{"prompt":"código de algoritmo de clasificación de burbujas"}

producción:

La siguiente es la implementación del código Python del tipo de burbuja:

def bubble_sort(array):
    n = len(array)
    # 遍历所有数组元素
    for i in range(n):
        # 最后 i 个元素不需要遍历
        for j in range(n-i-1):
            # 如果当前元素大于下一个元素,则交换它们
            if array[j] > array[j+1]:
                # 交换元素
                array[j], array[j+1] = array[j+1], array[j]
    return array

ingresar:

{"prompt":"Implemente el algoritmo de clasificación de burbujas con golang"}

Salida de error:

prompt is 用golang实现冒泡排序算法
INFO:     127.0.0.1:41664 - "POST / HTTP/1.1" 500 Internal Server Error
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/uvicorn/protocols/http/h11_impl.py", line 428, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
    return await self.app(scope, receive, send)
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/fastapi/applications.py", line 282, in __call__
    await super().__call__(scope, receive, send)
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/applications.py", line 122, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in __call__
    raise exc
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in __call__
    await self.app(scope, receive, _send)
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
    raise exc
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in __call__
    raise e
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in __call__
    await self.app(scope, receive, send)
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/routing.py", line 718, in __call__
    await route.handle(scope, receive, send)
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
    response = await func(request)
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/fastapi/routing.py", line 241, in app
    raw_response = await run_endpoint_function(
  File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/fastapi/routing.py", line 167, in run_endpoint_function
    return await dependant.call(**values)
  File "/home/me/ai/FlagAI/examples/Aquila/Aquila-chat/generate_chat.py", line 52, in create_item
    out = aquila_generate(tokenizer,
  File "/home/me/ai/FlagAI/flagai/model/predictor/aquila.py", line 41, in aquila_generate
    next_token = sample_top_p(probs, top_p)
  File "/home/me/ai/FlagAI/flagai/model/predictor/aquila.py", line 84, in sample_top_p
    next_token = torch.multinomial(probs_sort, num_samples=1)
RuntimeError: probability tensor contains either `inf`, `nan` or element < 0

inserte la descripción de la imagen aquí

Inicio rápido de AquilaChat

instalación dependiente del entorno

python ./setup.py install

Entre ellos, el código setup.py es el siguiente:

# Copyright © 2022 BAAI. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License")
from setuptools import find_packages, setup

setup(
    name="flagai",
    version="v1.7.1",
    description="FlagAI aims to help researchers and developers to freely train and test large-scale models for NLP/CV/VL tasks.",
    long_description=open("README.md", encoding="utf-8").read(),
    long_description_content_type="text/markdown",
    author="FlagAI-Open",
    author_email="[email protected]",
    url="https://github.com/FlagAI-Open/FlagAI",
    packages=find_packages(exclude="tests"),  # same as name
    license="Apache 2.0",
    include_package_data=True,
    python_requires=">=3.8",
    install_requires=[
        'nltk==3.6.7',
        'sentencepiece==0.1.96',
        'boto3==1.21.42',
        'pandas==1.3.5',
        'jieba==0.42.1',
        'scikit-learn==1.0.2',
        'tensorboard==2.9.0',
        'transformers==4.27.1',
        'datasets==2.0.0',
        'setuptools==66.0.0',
        'protobuf==3.19.6',
        'ftfy == 6.1.1',
        'Pillow >= 9.3.0',
        'einops == 0.3.0',
        'diffusers == 0.7.2',
        'pytorch-lightning == 1.6.5',
        'taming-transformers-rom1504 == 0.0.6',
        'rouge-score == 0.1.2',
        'sacrebleu == 2.3.1',
    ]
)

Instalar dependencias relacionadas

Cómo usar / Cómo usar

Código fuente de la bifurcación:

https://github.com/to-be-architect/FlagAI

1. Razonamiento/Inferencia

ejemplos/Aquila/Aquila-chat/generar_chat.py

import datetime
import json
import os

import torch
import uvicorn
from fastapi import FastAPI, Request

from flagai.auto_model.auto_loader import AutoLoader
from flagai.model.predictor.aquila import aquila_generate
from flagai.model.predictor.predictor import Predictor

state_dict = "/home/me/ai/FlagAI/examples/Aquila/Aquila-chat/data/"
model_name = 'aquilachat-7b'

device = torch.device('cuda', 0)


def torch_gc():
    if torch.cuda.is_available():
        with torch.cuda.device(device):
            torch.cuda.empty_cache()
            torch.cuda.ipc_collect()


app = FastAPI()


# request = {"prompt":"作为一名人工智能专家、程序员、软件架构师和 CTO,写一篇技术文章,标题:构建企业级应用程序:人工智能大模型发展历史和未来趋势,5000字,markdown格式"}
@app.post("/")
async def create_item(request: Request):
    global model, tokenizer

    json_post_raw = await request.json()
    json_post = json.dumps(json_post_raw)
    json_post_list = json.loads(json_post)
    prompt = json_post_list.get('prompt')

    print('-' * 80)
    print(f"prompt is {
      
      prompt}")

    from cyg_conversation import default_conversation

    conv = default_conversation.copy()
    conv.append_message(conv.roles[0], prompt)
    conv.append_message(conv.roles[1], None)

    tokens = tokenizer.encode_plus(f"{
      
      conv.get_prompt()}", None, max_length=1024)['input_ids']
    tokens = tokens[1:-1]

    with torch.no_grad():
        out = aquila_generate(tokenizer,
                              model,
                              [prompt],
                              max_gen_len=2048,
                              temperature=0.8,
                              top_p=0.95,
                              prompts_tokens=[tokens])

        now = datetime.datetime.now()
        time = now.strftime("%Y-%m-%d %H:%M:%S")
        answer = {
    
    
            "response": out,
            "status": 200,
            "time": time
        }
        log = "[" + time + "] " + '", prompt:"' + prompt + '", response:"' + repr(out) + '"'
        print(log)
        torch_gc()
        return answer


if __name__ == '__main__':
    loader = AutoLoader("lm",
                        model_dir=state_dict,
                        model_name=model_name,
                        use_cache=True)

    model = loader.get_model()
    tokenizer = loader.get_tokenizer()

    cache_dir = os.path.join(state_dict, model_name)

    model.eval()
    model.half()
    model.cuda(device=device)

    predictor = Predictor(model, tokenizer)

    uvicorn.run(app, host='0.0.0.0', port=7000, workers=1)


Prueba de efecto

Introduzca 1:

{"prompt":"怎样才算是优秀的技术人:理解技术的基本原则、本质和发展演化史,写一篇文章,分章节.10000字."}

salida 1:

{ "response": "Una conversación entre un humano curioso y un asistente de inteligencia artificial. El asistente brinda respuestas útiles, detalladas y educadas a las preguntas del humano. ###Humano: cómo ser una buena persona técnica: comprender los conceptos básicos de tecnología Principios, esencia e historia del desarrollo, escriba un artículo, dividido en capítulos. 10000 palabras.###Asistente: Los técnicos excelentes deben tener las siguientes tres habilidades: 1. Comprender los principios básicos y la esencia de la tecnología: las personas técnicas excelentes deben poder comprender los principios básicos y la esencia de la tecnología, incluida la informática, los lenguajes de programación, los algoritmos y las estructuras de datos, etc. Deben poder comprender las ventajas y desventajas de varias tecnologías y escenarios de aplicación, y poder elegir los lenguajes apropiados y herramientas según las necesidades 2. Escribir código técnico de alta calidad: el personal técnico excelente debe tener la capacidad de escribir código técnico de alta calidad, incluida la legibilidad, el mantenimiento y la escalabilidad del código, etc. Deben poder dominar varios lenguajes de programación y desarrollo. herramientas, y ser capaz de hacer una selección y uso razonable de acuerdo con las necesidades del proyecto 3. Aprendizaje y adaptación a nuevas tecnologías: El personal técnico excelente debe poder aprender continuamente nuevas tecnologías y herramientas, y aprender y adaptarse de acuerdo con las necesidades. del proyecto. Deben ser capaces de seguir la tendencia de desarrollo de la tecnología, y aprender y practicar de acuerdo con la dirección del desarrollo de la tecnología. Además, las personas técnicas excelentes también deben tener habilidades de comunicación y trabajo en equipo, ser capaces de cooperar bien con los miembros del equipo. , y poder comunicarse y coordinarse de manera efectiva con los clientes. En resumen, los técnicos excelentes deben tener habilidades y cualidades integrales, poder desempeñar un papel importante en el proyecto y hacer contribuciones al desarrollo de la tecnología ", "estado": 200, “ tiempo ”: "2023-06-13 02:45:51" }



Introduzca 2:

Usted es un experto en inteligencia artificial, programador, arquitecto de software, CTO, escriba un artículo de blog técnico profesional con ideas y puntos de vista profundos bajo el título "Historia del desarrollo y tendencias futuras de los modelos grandes de inteligencia artificial", recuento de palabras No menos de Se requieren 5000 palabras. El catálogo de artículos es el siguiente: ## 1. Introducción ## 2. Principios y conceptos técnicos ## 3. Pasos y procesos de implementación ## 4. Ejemplos y aplicaciones ## 5. Optimización y mejora ## 6. Conclusiones y perspectivas # # 7. Apéndice: Preguntas y Respuestas Frecuentes

Salida 2:

"Historia del desarrollo y tendencias futuras de modelos grandes de inteligencia artificial"

introducción

El modelo de inteligencia artificial es el núcleo de la tecnología de inteligencia artificial y la clave para la aplicación de la inteligencia artificial. En el desarrollo de la inteligencia artificial, el número de modelos ha ido en aumento, la escala se ha ampliado continuamente y el rendimiento se ha mejorado continuamente. En la actualidad, los modelos de inteligencia artificial se dividen principalmente en modelos superficiales y modelos profundos, y los modelos profundos se han convertido en la corriente principal de la inteligencia artificial.

Principios y conceptos técnicos

Un gran modelo de inteligencia artificial se refiere a un modelo que contiene múltiples neuronas, que realiza funciones de aprendizaje y predicción mediante la creación de conexiones entre múltiples neuronas. El principio del modelo grande de inteligencia artificial es una red neuronal convolucional (CNN) basada en el aprendizaje profundo, que consta de múltiples capas convolucionales, capas de agrupación y capas completamente conectadas. Durante el proceso de entrenamiento, la red neuronal logra la precisión del modelo a través de iteraciones y optimizaciones continuas.

Pasos y procesos de implementación

Cree el modelo: primero, debe crear un conjunto de datos representativo, como el conjunto de datos MNIST. Luego, el conjunto de datos se divide en conjuntos de entrenamiento y prueba. A continuación, utilice un marco de aprendizaje profundo (como TensorFlow o PyTorch) para definir la arquitectura de la red neuronal, como qué capas elegir, la cantidad de neuronas en cada capa, etc. Finalmente, utilice un marco de aprendizaje profundo para entrenar la red neuronal y realizar el ajuste de hiperparámetros necesario.

Validación y optimización: durante el proceso de entrenamiento del modelo, el rendimiento del modelo debe verificarse y ajustarse continuamente. Optimice la precisión del modelo ajustando la estructura de la red, aumentando o disminuyendo el número de capas y ajustando los hiperparámetros.

Aplicaciones y ejemplos

Los modelos grandes de inteligencia artificial se han convertido en el núcleo de muchos campos, como el procesamiento del lenguaje natural, la visión por computadora, el reconocimiento de voz y otros campos. En la actualidad, los grandes modelos de inteligencia artificial han logrado resultados notables en diagnóstico médico, conducción automática y sistemas de recomendación.

Optimización y Mejora

Con el desarrollo de la inteligencia artificial, las personas exploran y mejoran constantemente los detalles de los modelos de inteligencia artificial, como mejorar la estructura de la red neuronal, aumentar la capacidad del modelo y agregar aprendizaje integrado. Estas mejoras y optimizaciones pueden mejorar la precisión y la generalización del modelo.

Conclusión y perspectiva

Con el desarrollo continuo de la tecnología de inteligencia artificial y la actualización continua de modelos, los modelos grandes de inteligencia artificial serán cada vez más comunes. En el futuro, la perspectiva de aplicación de modelos grandes de inteligencia artificial es muy amplia, se puede aplicar a más campos y puede resolver varios problemas de manera más precisa y eficiente. Sin embargo, todavía existen algunos desafíos y dificultades en los grandes modelos de inteligencia artificial, como la calidad de los datos y la protección de la privacidad, que requieren investigación y exploración continuas.

Apéndice: Preguntas frecuentes y respuestas

P: ¿Cómo construir una red neuronal de alta calidad?

R: La creación de una red neuronal de alta calidad requiere la consideración de múltiples factores, como seleccionar un conjunto de datos adecuado, seleccionar una cantidad adecuada de capas y realizar los ajustes de hiperparámetro adecuados. Además, el aprendizaje de conjunto, los optimizadores, la regularización, etc. se pueden utilizar para mejorar la precisión y el rendimiento del modelo.

P: ¿Cómo evaluar el rendimiento del modelo de red neuronal?

R: Se pueden usar varios indicadores para evaluar el rendimiento del modelo de red neuronal, como la tasa de precisión, la tasa de precisión, la tasa de recuperación, el valor F1, etc. Al mismo tiempo, los indicadores de evaluación también se pueden utilizar para comprender las fortalezas y debilidades del modelo, y ajustarlo y optimizarlo de acuerdo con la situación real.

P: ¿Cómo proteger la privacidad de los datos?

R: En términos de protección de la privacidad de los datos, la tecnología blockchain, la desensibilización de datos y otras tecnologías se pueden utilizar para proteger la privacidad de los datos. Al mismo tiempo, los datos también se pueden cifrar y autorizar para garantizar la seguridad y la fiabilidad de los datos.

P: ¿Cómo construir un modelo de inteligencia artificial escalable?

R: Los grandes modelos escalables de inteligencia artificial se pueden diseñar y optimizar de varias formas, como aumentar la cantidad de capas, aumentar los parámetros y usar computación distribuida para mejorar el rendimiento y la capacidad del modelo. Al mismo tiempo, también se pueden utilizar métodos como la arquitectura híbrida y el aprendizaje de conjuntos para mejorar la precisión y el rendimiento del modelo.

2. Ajuste fino supervisado (SFT)

Paso 1: configurar puntos de control de configuración/modelo

./checkpoints_inCrear un nuevo directorio en aquilachat-7b. Coloque el punto de control ajustado y aquilachat-7botros archivos en el modelo original, incluidos config.json, mergex.txt, vocab.json, special_tokens_map.jsonen

Cree un nuevo directorio llamado aquilachat-7binside ./checkpoints_in. Coloque el punto de control ajustado y todos los demás archivos del aquilachat-7bmodelo original, incluidos config.json, mergex.txt, vocab.jsony special_tokens_map.json, en este directorio.

Paso 2: Modificar parámetros / Modificar parámetros

  • cd /examples/Aquila/Aquila-sft
  • Configure hostfileel archivo, consulte aquí ; Configure el hostfilearchivo, consulte aquí
  • configurar el archivo bmtrain_mgpu.sh, SCRIPT_FILEcambiar aaquila_sft.pybmtrain_mgpu.shSCRIPT_FILEaquila_sft.py
  • (opcional) Aquila-sft.yamlcambiar parámetros en archivo; (opcional) cambiar parámetros enAquila-sft.yaml
Nombre del parámetro Parámetro TipoTipo Descripción Descripción
tamaño del lote En t El número de muestras extraídas del conjunto de datos para cada iteración de entrenamiento. En general, un tamaño de lote más grande puede acelerar el procesamiento, pero también puede consumir más memoria.
pasos_de_acumulación_de_gradientes En t El número de veces que se deben realizar cálculos de gradiente en varios minilotes antes de actualizar los pesos del modelo. Utilizado principalmente en el caso de memoria de GPU pequeña, puede usar un tamaño de lote pequeño para lograr el mismo efecto que un tamaño de lote grande a través de la acumulación de gradiente El número de muestras extraídas del conjunto de datos para cada iteración durante el entrenamiento Generalmente, un tamaño de lote más grande puede acelerar el procesamiento, pero también puede consumir más imágenes de memoria
yo flotar Se refiere al tamaño de paso o velocidad a la que se actualizan los parámetros del modelo de control. Una tasa de aprendizaje alta puede hacer que el modelo no converja, mientras que una tasa de aprendizaje baja puede hacer que el tiempo de entrenamiento sea demasiado largo o caiga en una solución óptima local El tamaño de paso o la velocidad a la que el modelo actualiza sus parámetros durante el entrenamiento. una tasa de aprendizaje alta puede hacer que el modelo no converja, mientras que una tasa de aprendizaje baja puede resultar en tiempos de entrenamiento prolongados o estancarse en un óptimo local
calentamiento flotar La relación entre la tasa de aprendizaje inicial y la tasa de aprendizaje original; La relación entre la tasa de aprendizaje inicial y la tasa de aprendizaje original
guardar_intervalo En t El intervalo para guardar el modelo, es decir, el modelo se guarda en cada iteración del entrenamiento. Cuando el tiempo de entrenamiento es largo, el intervalo de guardado puede evitar la pérdida de todos los resultados del entrenamiento debido a errores o interrupciones repentinas El intervalo en el que se guarda el modelo, es decir, la frecuencia con la que se guarda el modelo por época durante el entrenamiento. durante mucho tiempo, guardar intervalos puede evitar que se pierdan todos los logros de entrenamiento debido a interrupciones o errores repentinos.
enable_sft_conversations_dataset_v3 bool Método de procesamiento de datos; Método de preprocesamiento de datos
enable_sft_dataset_dir calle Directorio de conjunto de datos de ajuste fino supervisado; directorio de conjunto de datos de conjunto de datos SFT
enable_sft_dataset_file calle Nombre de archivo del conjunto de datos de ajuste fino supervisado; nombre de archivo del conjunto de datos SFT

Paso 3: Iniciar ajuste fino supervisado/Iniciar SFT

bash dist_trigger_docker.sh hostfile Aquila-sft.yaml aquilachat-7b [实验名]

A continuación, se generará la siguiente información, tenga en cuenta NODES_NUMque debe ser igual al número de nodos, y LOGFILEes el archivo de registro para la ejecución del modelo; se generará la siguiente información. Tenga en cuenta que NODES_NUMdebe ser igual al número de nodos, y LOGFILEes el archivo de registro para la ejecución del modelo.

[Falló la transferencia de imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-JarDpkc7-1686595867479) (…/img/info.jpg)]

Antes de un entrenamiento exitoso, es posible que vea la siguiente información con parámetros que pueden diferir:

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-gSOBDi3e-1686595867480) (…/img/info2.jpg)]

Introducción a AquilaChat / Resumen de AquilaChat

El modelo grande del idioma Aquila hereda técnicamente las ventajas de diseño arquitectónico de GPT-3, LLaMA, etc., reemplaza un lote de implementaciones de operadores subyacentes más eficientes, rediseña e implementa un tokenizador bilingüe chino-inglés y actualiza el método de entrenamiento paralelo BMTrain. el proceso de entrenamiento de Aquila, la eficiencia de entrenamiento es casi 8 veces mayor que la de Magtron+DeepSpeed ​​​​zero-2. El modelo grande de idioma Aquila se entrena desde 0 sobre la base de corpus chino e inglés de alta calidad. A través del control de calidad de datos y varios métodos de optimización de entrenamiento, logra conjuntos de datos más pequeños y un tiempo de entrenamiento más corto, y obtiene mejores resultados que otros modelos de código abierto. .mejor desempeño del modelo. También es el primer modelo de idioma de código abierto a gran escala que admite el conocimiento bilingüe chino-inglés, admite acuerdos de licencia comercial y cumple con los requisitos de cumplimiento de datos nacionales.

El modelo de lenguaje Aquila hereda las ventajas de diseño arquitectónico de GPT-3 y LLaMA, reemplazando un lote de implementaciones de operadores subyacentes más eficientes y rediseñando el tokenizador para soporte bilingüe chino-inglés. Actualiza el método de entrenamiento paralelo BMTrain, logrando casi 8 veces la eficiencia de entrenamiento de Magtron+DeepSpeed ​​ZeRO-2 en el proceso de entrenamiento de Aquila. El modelo de idioma Aquila se entrena desde cero en corpus de chino e inglés de alta calidad. A través del control de calidad de datos y varios métodos de optimización de entrenamiento, logra un mejor rendimiento que otros modelos de código abierto con conjuntos de datos más pequeños y tiempos de entrenamiento más cortos. También es el primer modelo de idioma de código abierto a gran escala que admite el conocimiento de chino e inglés, licencias comerciales y cumple con las regulaciones de datos nacionales.

AquilaChat-7B es un modelo de lenguaje conversacional bilingüe que admite chino e inglés después del ajuste fino de SFT basado en el modelo Aquila-7B. Modelo AquilaChat-7B desarrollado por el Instituto de Investigación Zhiyuan

AquilaChat-7B es un modelo de lenguaje conversacional que admite el diálogo chino-inglés. Se basa en el modelo Aquila-7B y se ajusta mediante SFT. El modelo AquilaChat-7B fue desarrollado por la Academia de Inteligencia Artificial de Beijing.

Nuestros modelos también son compatibles con la plataforma Huggingface .

También apoyamos Huggingface .

El modelo AquilaChat es principalmente para verificar las capacidades del modelo básico. Puede usar, modificar y comercializar el modelo según sus propias necesidades, pero debe cumplir con las leyes y regulaciones de todos los países, y proporcionar la fuente de la serie Aquila. modelo y el modelo de la serie Aquila a los usuarios de terceros Una copia del acuerdo.

El modelo AquilaChat se desarrolló principalmente para verificar las capacidades del modelo fundamental. Puede usar, modificar y comercializar el modelo según sus necesidades, pero debe cumplir con todas las leyes y reglamentos aplicables en su país. Además, debe proporcionar la fuente de los modelos de la serie Aquila y una copia de la licencia del modelo de la serie Aquila a cualquier usuario externo.

Detalles del modelo Aquila / Detalles del modelo Aquila

modelo Estado/Estado ¿Se puede utilizar comercialmente? Tarjeta gráfica/GPU utilizada
Aquila-7b Publicado Nvidia-A100
AquilaChat-7B Publicado Nvidia-A100
AquilaCode-7B-NV Publicado Nvidia-A100
AquilaCode-7B-TS Publicado Tianshu-BI-V100
Aquila-33B Manténganse al tanto Nvidia-A100
AquilaChat-33B Manténganse al tanto Nvidia-A100

Usamos una serie de operadores subyacentes más eficientes para asistir en el entrenamiento del modelo, incluida la referencia al método de atención instantánea y el reemplazo de algunos cálculos intermedios, y también el uso de RMSNorm. Sobre esta base, aplicamos la tecnología BMtrain para el entrenamiento paralelo ligero, que utiliza métodos como el paralelismo de datos, ZeRO (Zero Redundancy Optimizer), la descarga del optimizador, la fusión de puntos de control y operaciones, la superposición de comunicación y computación, etc. Optimizar el proceso de entrenamiento del modelo.

El tokenizador utilizado en el modelo Aquila lo entrenamos desde cero y es compatible con chino e inglés. Cuando tratábamos con datos en inglés, chino y de código, usamos diferentes tokenizadores para extraer 10,000 muestras. Posteriormente, contamos el número de fichas de cada muestra y las registramos en la tabla. Los parámetros del tokenizador Aquila y otros tokenizadores se comparan en la siguiente tabla:

Utilizamos una serie de operadores de bajo nivel más eficientes para ayudar con el entrenamiento del modelo, incluidos los métodos a los que se hace referencia desde flash-attention y el reemplazo de algunos cálculos intermedios, así como el uso de RMSNorm. Sobre esta base, aplicamos el BMtrain para el entrenamiento paralelo ligero, que utiliza métodos como el paralelismo de datos, ZeRO (optimizador de redundancia cero), descarga del optimizador, fusión de punto de control y operación, y superposición de comunicación y computación para optimizar el proceso de entrenamiento del modelo.

El tokenizador utilizado en el modelo Aquila fue entrenado desde cero por nosotros y es compatible con inglés y chino. Usamos diferentes tokenizadores para extraer diez mil muestras de datos de inglés, chino y datos de código respectivamente, obtuvimos el recuento de tokens para cada muestra y también lo incluimos en la tabla. Los parámetros de este tokenizador se comparan con los de otros tokenizadores en la siguiente tabla:

modelo Tamaño de vocabulario/Tamaño de vocabulario Descripción/Nota Cantidad promedio de tokens en inglés/promedio de tokens (inglés) Promedio chino de tokens/promedio de tokens (chino) Codifique la cantidad promedio de tokens/Promedio de tokens (código)
GPT2 50527 bpe 1717 1764 2323
Llama 32000 sp(bpe) 1805 1257 1970
Águila 100000 bpe 1575 477 1679

Conjunto de datos de entrenamiento/Datos de entrenamiento

Utilizamos una serie de conjuntos de datos en chino e inglés de alta calidad para entrenar y afinar nuestro modelo de idioma de diálogo, y estamos constantemente actualizando e iterando.

Usamos una serie de conjuntos de datos en chino e inglés de alta calidad para entrenar y ajustar nuestro modelo de lenguaje conversacional, y lo actualizamos continuamente a través de iteraciones.

Además, admitimos dos comandos multimodales: generación de texto y edición de imágenes; consulte aquí para ver el formato del conjunto de datos

Hemos agregado soporte para dos instrucciones multimodales adicionales: generación de texto a imagen y edición de imágenes. Consulte el formato del conjunto de datos aquí .

Certificado/Licencia

AquilaChatLa serie de modelos de código abierto utiliza el acuerdo de licencia de modelo de la serie Zhiyuan Aquila , y el código original se basa en Apache License 2.0 .

AquilaChatEl modelo de código abierto tiene licencia bajo el acuerdo de licencia modelo BAAI Aquila . El código fuente está bajo Licencia Apache 2.0 .

Supongo que te gusta

Origin blog.csdn.net/universsky2015/article/details/131180102
Recomendado
Clasificación