Falcon 180B es actualmente el modelo de código abierto más potente

El Instituto de Innovación Tecnológica lanzó recientemente el modelo de lenguaje grande (LLM) Falcon 180B, que supera al Llama-2 70b y está a la par con el modelo base PaLM-2 Large de Google Bard.

El 180B es la última versión del modelo Falcon 40B. Aquí hay una descripción general rápida del modelo:

Modelo de parámetros 180B, dos versiones (base y chat)

Entrene con 3,5 billones de tokens utilizando el conjunto de datos de RefinedWeb

El contexto tiene un máximo de 2048 tokens.

Tiene aproximadamente el tamaño de ChatGPT (GPT-3.5), que tiene 175B de parámetros. ¿Es el mejor? A partir de septiembre de 2023, el Falcon 180B es el número uno en la clasificación de modelos de Hug Face.

Variantes de modelo

El Falcon 180B viene en dos versiones: básica y chat.

La versión básica es un modelo decodificador causal. Este modelo es excelente para realizar ajustes adicionales en sus propios datos.

La versión de chat del chat es similar a la versión básica, que también es un modelo de decodificador causal con 180 mil millones de parámetros. Pero está ajustado en los conjuntos de datos de comando (chat) Ultrachat5, Platypus6 y Airboros7.

Rendimiento del modelo

En términos de capacidades, Falcon 180B está hombro con hombro con PaLM-2 Large, lo que lo convierte en uno de los modelos de lenguaje disponibles públicamente más potentes.

El modelo Falcon cuantificado mantuvo métricas similares en todos los puntos de referencia.

Al revisar las clasificaciones de Open LLM, notará que a pesar de las afirmaciones de que es el mejor Open LLM, la versión modificada de Llama 2 sigue siendo mejor que el Falcon 180B. Pero vale la pena señalar que el modelo Llama 2 original llegó después del lanzamiento del Falcon.

Requisitos de hardware

Aunque el modelo es de uso gratuito, le resultará difícil ejecutarlo en una GPU normal. Incluso la versión GPTQ (The Bloke) de este modelo todavía requiere más de 80 GB de VRAM. Eche un vistazo a esta tabla de la publicación de HF:

8 GPU A100 de 80 GB, nuevamente después de cuantificar a la mitad de precisión (FP16). Seleccionar la precisión int4 aún requiere 320 GB de memoria.

Entonces, ¿cuánto cuestan 8 A100? El siguiente es el precio por hora de la GPU A100 para AWS en el este de EE. UU.

En otras palabras, si ejecuta int4, costará alrededor de $ 24 000 por mes y, con la mitad de precisión, será alrededor de $ 30 000.

El papel de los conjuntos de datos

La Ley de Escala de Chinchilla establece que el tamaño de un modelo y su conjunto de datos de entrenamiento deben crecer simultáneamente para maximizar el rendimiento dentro de un presupuesto computacional determinado.

Falcon180B fue entrenado con la asombrosa cantidad de 3,5 billones de tokens utilizando el conjunto de datos de RefinedWeb. RefinedWeb no sólo es enorme, sino que también está cuidadosamente refinado, mejorado y entrenado con contenido adicional cuidadosamente seleccionado. Y TII continúa enfatizando la importancia de RefinedWeb en la creación de su modelo Falcon.

Las implicaciones prácticas de este principio en aplicaciones del mundo real son muy profundas; este efecto se puede ver cuando el modelo Llama-65B se entrena con 1,4 billones de tokens y funciona significativamente mejor que el modelo OPT-175B porque este último se entrena solo con 180 mil millones de tokens. Esto también ilustra plenamente que cuando los modelos grandes carecen de datos suficientes, su rendimiento puede verse superado por modelos pequeños con datos abundantes.

Falcon 180b frente a ChatGPT

Falcon 180B se puede probar a través de la demostración en HuggingFace. Las demostraciones están limitadas a una duración de sesión de aproximadamente 1000 palabras.

Compararemos el rendimiento de ChatGPT y Falcon 180B bajo el mismo mensaje. La siguiente es la configuración predeterminada de la demostración Falcon 180B:

Temperatura: 0

Máximo de tokens nuevos: 512

P superior: 0,9

Penalización por repetición: 1.1

Probemos su desempeño.

¿Cuál es la última fecha de la que tiene conocimiento?

 **Falcon 180B**:
 As an AI language model, I do not have knowledge of specific dates unless they
 are provided to me. Please provide a specific date or context for me to answer
 your question accurately.
 
 **ChatGPT**:
 My knowledge is current up to September 2021. I do not have information on
 events, developments, or information that has occurred after that date. If you have
 questions or need information beyond that date, I may not be able to provide it. Please
 verify any information I provide with more up-to-date sources.

En otras palabras, los datos de uso no se indicaron durante el entrenamiento, pero según los consejos oficiales, debería ser el momento de RefinedWeb.

codigo de GENERACION

La generación de códigos es algo que nos preocupa más, pero los modelos más pequeños (7B-40B) no funcionan bien con los códigos, por lo que apareció el Code Llama dedicado .

Escribe una función en Python que calcule el cuadrado de una suma de dos números.

Halcón 180B:

 Here is a simple function in Python that calculates the square of a sum of two
 numbers:
 
 ```py
 def square_sum(num1, num2):
     return (num1 + num2)**2

Esta función toma dos argumentos num1 y num2, los suma y luego
calcula el cuadrado del resultado usando el operador de exponenciación (**).
Se devuelve el resultado final.

Por ejemplo, si llamas square_sum(3, 4), devolverá 49, porque (3 + 4)
2 = 7 2 = 49.


**ChatGPT**:

Puedes crear una función de Python para calcular el cuadrado de la suma de dos
números como este:

def square_of_sum(num1, num2):
    # Calculate the sum of the two numbers
    total = num1 + num2

    # Calculate the square of the sum
    square = total ** 2

    return square

# Example usage:
num1 = 5
num2 = 3
result = square_of_sum(num1, num2)
print(f"The square of the sum of {
      
      num1} and {
      
      num2} is {
      
      result}")

Esta función, square_of_sumtoma dos números como entrada, calcula su
suma y luego calcula el cuadrado de esa suma. El resultado lo devuelve la
función. Puede llamar a esta función con diferentes valores de num1y num2
para calcular el cuadrado de la suma de dos números cualesquiera.


虽然ChatGPT的代码多,但是180B的代码更简洁,更容易阅读。让我们试一个更难的:

> Write a function in python that splits a list into 3 equal parts and returns alist with a random element of each sublist.

**Falcon 180B**:

Aquí tienes una función que hace lo que estás pidiendo:

import random

def split_list(lst):
    n = len(lst)
    part_size = n // 3
    parts = [lst[i:i+part_size] for i in range(0, n, part_size)]
    return [random.choice(part) for part in parts]

Esta función toma una lista como entrada y la divide en tres partes iguales
mediante la división de listas. Luego selecciona un elemento aleatorio de cada sublista usando
la función random.choice() y devuelve una nueva lista que contiene estos elementos.

A continuación se muestra un ejemplo de uso de la función:

lista = [1, 2, 3, 4, 5, 6, 7, 8, 9]
lista_dividida(lista)

[5, 6, 7]

En este ejemplo, la lista de entrada se divide en tres partes iguales de tamaño 3
y se selecciona un elemento aleatorio de cada parte para formar la lista de salida [5, 6, 7].


**ChatGPT**:

Puede lograr esto dividiendo primero la lista en tres partes iguales y
luego seleccionando un elemento aleatorio de cada sublista. Aquí hay una función de Python para
hacer eso:

import random

def split_and_random_elements(input_list):
    # Calculate the size of each sublist
    sublist_size = len(input_list) // 3

    # Split the input list into three sublists
    sublists = [input_list[i:i + sublist_size] for i in range(0, len(input_list), sublist_size)]

    # Initialize a list to store the random elements
    random_elements = []

    # Select a random element from each sublist
    for sublist in sublists:
        if sublist:
            random_element = random.choice(sublist)
            random_elements.append(random_element)

    return random_elements

# Example usage:
input_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
result = split_and_random_elements(input_list)
print(result)

En esta función, primero calculamos el tamaño de cada sublista dividiendo la
longitud de la lista de entrada por 3. Luego, usamos la comprensión de listas para dividir la
lista de entrada en tres sublistas de igual tamaño. Finalmente, recorremos las
sublistas y usamos la random.choicefunción para seleccionar un elemento aleatorio de
cada sublista y lo agregamos a la random_elementslista, que se devuelve como
resultado.


Falcon 180B的代码更简洁,但是它的代码有一个错误输出的例子。这样看对于代码生成而言,还有很大的微调空间。

**QA**

我们用下面这个表提问

![](http://images.overfit.cn/upload/20230912/3c8a552a49ca4ce290b0332cb3913f52.png)

Utilice los datos de la tabla de rebajas:

|Model|Size|Code|Commonsense Reasoning|World Knowledge|Reading Comprehension|Math|MMLU|BBH|AGI Eval|
| — -| — -| — -| — -| — -| — -| — -| — -| — -| — -|
|Llama 1|7B|14.1|60.8|46.2|58.5|6.95|35.1|30.3|23.9|
|Llama 1|13B|18.9|66.1|52.6|62.3|10.9|46.9|37.0|33.9|
|Llama 1|33B|26.0|70.0|58.4|67.6|21.4|57.8|39.8|41.7|
|Llama 1|65B|30.7|70.7|60.5|68.6|30.8|63.4|43.5|47.6|
|Llama 2|7B|16.8|63.9|48.9|61.3|14.6|45.3|32.6|29.3|
|Llama 2|13B|24.5|66.9|55.4|65.8|28.7|54.8|39.4|39.1|
|Llama 2|70B|**37.5**|**71.9**|**63.6**|**69.4**|**35.2**|**68.9**|**51.2**|**54.2**|

para responder a la pregunta:
Calcule ¿cuánto mejor (% de aumento) es Llama 2 7B vs Llama 1 7B en comprensión lectora?


回答结果如下:

**Falcon 180B**:

La puntuación de comprensión lectora de Llama 1 7B es 58,5 y de Llama 2 7B es
61,3. Para calcular el aumento porcentual utilizamos la fórmula:

Aumento porcentual = ((Valor nuevo - Valor anterior) / Valor anterior) * 100

Introduciendo los valores obtenemos:

Aumento porcentual = ((61,3 - 58,5) / 58,5) * 100 = 5,1%

Por lo tanto, Llama 2 7B es un 5,1% mejor que Llama 1 7B en comprensión lectora.


**ChatGPT**:

Para calcular el aumento porcentual en comprensión lectora entre Llama 2
7B y Llama 1 7B, puedes utilizar la siguiente fórmula:

Aumento porcentual = [(Valor nuevo - Valor anterior) / Valor anterior] * 100

En este caso:

  • Nuevo valor (Llama 2 7B Comprensión lectora): 61,3
  • Valor anterior (Llama 1 7B Comprensión lectora): 58,5

Ahora, inserte estos valores en la fórmula:

Aumento porcentual = [(61,3 - 58,5) / 58,5] * 100

Aumento porcentual = [(2,8) / 58,5] * 100

Aumento porcentual ≈ 4,79%

Por lo tanto, Llama 2 7B se desempeña aproximadamente un 4,79% mejor que Llama 1 7B en
comprensión lectora.


两种模型给出了不同的答案。哪一个是正确的?好吧,ChatGPT对了:

Percentage Increase = ((61.3–58.5) / 58.5) * 100 = 5.1%

Falcon 180B的公式是没问题的,但是最后一步的除法算错了。

## 总结

Falcon 180B是目前最大的公开模特。它在排行榜上名列前茅,甚至给那些大牌的专有模式,比如PaLM-2,带来了竞争压力。但是我们的评估表明,它可能还需要有更大的提升。

对于有兴趣测试和评估LLM的个人或组织,有以下建议:

1、定义明确的目标:了解想通过评估达到什么目标。无论是衡量模型在语言理解方面的熟练程度,探索道德考虑,还是测试偏见,有一个明确的目标将指导评估过程。

2、多样化的输入:确保测试数据集包含广泛的主题、语言、文化和复杂性。这确保了对模型能力的全面评估。

3、检查偏差:在模型的反应中积极寻找明显和微妙的偏差。这包括与种族、性别、国籍等有关的偏见。LLM可能会无意中携带训练数据中存在的偏见。

4、复杂场景:不仅给模型提供简单的问题,还要提供复杂的、多方面的场景,以了解其深度和推理能力。

5、一致性:以不同的时间间隔多次运行相同或类似的查询,检查响应的一致性。

6、真实世界用例:在业务领域相关的实际的、真实的场景中测试模型。这给了一个概念,如何很好地将模型集成到实际应用中。

7、与替代方案比较:如果可能,将输出与其他类似的llm进行比较。这将给出一个相对的性能度量。

8、反馈循环:实现一个反馈机制,在这个机制中,评估者可以对模型的响应提供反馈。这对于迭代改进是有价值的。

9、了解局限性:每个模型都有其局限性。注意模型的知识边界、任何预先设定的边界以及它的一般设计约束。

10、安全措施:特别是在面向公众的应用程序中使用该模型时,要实现保护措施以防止有害输出或误用。

11、保持更新:LLM不断发展。随时了解模型的最新版本和改进。

相信随着LLM不断发展,他会与我们的日常生活更加无缝地融合在一起,但是现在还为时过早,而且我个人认为,在硬件限制的情况下,减小模型的大小这个研究方向是非常有前途的,包括,模型压缩,发现更小但是更好的模型,甚至是另外一种更高效的建模方法。

[https://avoid.overfit.cn/post/14268c27f72a4c9d994e9acfbcae25b0](https://avoid.overfit.cn/post/14268c27f72a4c9d994e9acfbcae25b0)

Supongo que te gusta

Origin blog.csdn.net/m0_46510245/article/details/132823814
Recomendado
Clasificación