Diagrama general de CogView

Soy un novato al principio, espero registrar lo que he aprendido como tomar notas, y también espero ayudar a las personas que también están comenzando.

Tabla de contenido

1. Resumen

2. Entrada de conjunto de datos (token)

Ejemplo, Transformador (GPT)

四、TransformerLayer

5. Auto atención

6. MLP


1. Resumen


2. Entrada de conjunto de datos (token)

1. Generar

Generar conjunto de datos binarios por cogdata (generar token)

cogdata用法:GitHub - Sleepychord/cogdata: un sistema de gestión de datos ligero para entrenamiento previo a gran escala

2, ficha

El texto genera un token de texto a través del modelo SentencePiece; la imagen se convierte en un token de imagen a través de un AE discretizado (Codificador automático).

La función del token es convertir el texto y la imagen en pequeños bloques con un significado independiente tanto como sea posible, lo cual es conveniente para el mapeo posterior al espacio del token (similar a la expresión del vector de palabras ABABA), y la importancia para la imagen aquí es aún mayor. , porque a El gráfico ampliado se convierte en varios bloques pequeños, lo que reduce la carga de cálculo de la red posterior.

3, datos y etiqueta

Debido a que se predice de izquierda a derecha, por ejemplo, la entrada del primer token obtiene el segundo token predicho y luego lo compara con el segundo token del objetivo para obtener la pérdida (por lo que las etiquetas están un poco por detrás de los tokens)

El siguiente código está en pretrain_gpt2.py (las etiquetas son el objetivo de comparación; los tokens son los datos del token de entrada)

def get_batch(data_iterator, args, timers):#获取该batch的数据
    # Items and their type.
    keys = ['text', 'loss_mask']
    datatype = torch.int64

    # Broadcast data.
    timers('data loader').start()
    if data_iterator is not None:
        data = next(data_iterator)
    else:
        data = None
    timers('data loader').stop()

    data_b = mpu.broadcast_data(keys, data, datatype)
    # Unpack.解压数据
    tokens_ = data_b['text'].long()
    loss_mask = data_b['loss_mask'].float()#这个loss mask应该是服务于继续训练的那种吧(如果一开始训练应该为None)
    labels = tokens_[:, 1:].contiguous()#目标
    loss_mask = loss_mask[:, 1:].contiguous()
    tokens = tokens_[:, :-1].contiguous()#输入token
    #因为是从左到右预测,比如说第一个token输入得到预测的第二个token再与目标的第二个token进行比对得到loss(所以labels比tokens延后一位)
    attention_mask = None

    # Get the masks and postition ids.获得位置编码,attention mask 和 loss mask
    attention_mask, loss_mask, position_ids = get_masks_and_position_ids(
        tokens,
        loss_mask=loss_mask,
        attention_mask=attention_mask,
        args=args
        )
    # Convert转为半精度
    if args.fp16:
        attention_mask = attention_mask.half()

    return tokens, labels, loss_mask, attention_mask, position_ids

Ejemplo, Transformador (GPT)

Para obtener detalles, análisis de código, etc., consulte la construcción general de la estructura de la red en CogView: se busca programador

​​​​​​Transformador (GPT) en el mapa resumen

Las incrustaciones de palabras se convierten en vectores de palabras; Transformer es la estructura de red principal: predice tokens de izquierda a derecha (el token anterior expulsa al token siguiente), que consta de varios bloques de Transformer (capas).

 El Transformador en esta figura se puede subdividir de la siguiente manera (sin procesamiento disperso)

 Para obtener detalles, análisis de código, etc., consulte el blog de Transformer_ttya en CogView - CSDN Blog

 Entre ellos, el TransformerLayer de una sola capa: ver cuatro


四、TransformerLayer

Para obtener detalles, análisis de código, etc., consulte el blog TransformerLayer_ttya de una sola capa en CogView-CSDN Blog

La estructura residual se usa dos veces (para facilitar la realización de modelos de muy alta complejidad y ayuda a resolver el problema de la desaparición y explosión de gradientes), y LayerNorm también se usa para el mantenimiento de la estabilidad.

Entre ellos, Self Attention: ver cinco

Entre los MLP: ver seis


5. Auto atención

Para obtener detalles, análisis de código, etc., consulte el blog de Self Attention_ttya en CogView - CSDN Blog

Haga que el aprendizaje en línea se centre en un punto de información importante

La máscara de atención agregada aquí es para la predicción de izquierda a derecha (triángulo inferior)


6. MLP

Para obtener detalles, análisis de código, etc., consulte el blog de MLP_ttya en CogView - CSDN Blog


 Todos son bienvenidos a criticar y corregir en el área de comentarios, gracias~

Supongo que te gusta

Origin blog.csdn.net/weixin_55073640/article/details/126608401
Recomendado
Clasificación