HuggingFace镜像/gemma-2B-inst-aipi
模型介绍文件和版本分析
下载使用量0

开放思维

from openmind import AutoTokenizer, AutoModel, is_torch_npu_available
from openmind_hub import snapshot_download
import torch
import argparse
import torch.nn.functional as F


# 均值池化 - 考虑注意力掩码以进行正确的平均
def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0] # model_output的第一个元素包含所有token嵌入
    input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
    return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)

def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--model_name_or_path",
        type=str,
        help="Path to model",
        default="../",
    )
    args = parser.parse_args()
    return args

def main():
    args = parse_args()
    model_path = args.model_name_or_path

    if is_torch_npu_available():
        device = "npu:0"
    else:
        device = "cpu"

    # 我们想要获取句子嵌入的句子
    sentences = ['This is an example sentence', 'Each sentence is converted']

    # 从openmind_hub加载模型
    tokenizer = AutoTokenizer.from_pretrained('Rose/gemma-2B-inst-aipi')
    model = AutoModel.from_pretrained('Rose/gemma-2B-inst-aipi')

    # 对句子进行分词
    encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')

    # 计算token嵌入
    with torch.no_grad():
        model_output = model(**encoded_input)

    # 执行池化
    sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

    # 归一化嵌入
    sentence_embeddings = F.normalize(sentence_embeddings, p=2, dim=1)

    print("Sentence embeddings:")
    print(sentence_embeddings)


if __name__ == "__main__":
    main()

gemma-2B 在 SAIL/Symbolic-Instruction-Tuning 上的微调

本仓库包含在 sail/symbolic-instruction-tuning 数据集上微调后的 gemma-2B 模型。该模型旨在以更高的准确性和效率来解释和执行符号指令。

概述

gemma-2B 模型最初以其强大的语言理解能力而闻名,现已通过微调来增强其在符号指令数据上的性能。这包括在 sail/symbolic-instruction-tuning 数据集上对模型进行重新训练,该数据集包含各种指令数据,用于测试模型遵循抽象和复杂指令的能力。

动机

在该特定数据集上微调 gemma-2B 的动机是为了弥合语言理解与符号环境中执行之间的差距。这在代码生成、自动推理以及更复杂的 AI 指令遵循等领域具有广泛的应用。

入门指南

要使用此模型,您需要在 Hugging Face 上拥有一个账户并安装 transformers 库。您可以使用 pip 安装该库:

pip install transformers

安装完成后,您可以使用以下代码加载并使用模型:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "your-huggingface-username/gemma-2B-fine-tuned"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# Now you can use the model for inference
input_text = "Your symbolic instruction here"
input_ids = tokenizer.encode(input_text, return_tensors='pt')

# Generate the output
output = model.generate(input_ids)
print(tokenizer.decode(output[0], skip_special_tokens=True))

微调过程

模型通过以下过程进行微调:

  • 预处理:对sail/symbolic-instruction-tuning数据集进行预处理,以符合gemma-2B所需的输入格式。
  • 训练:使用自定义训练循环对模型进行微调,该循环会监控损失并在预留的验证集上进行评估。
  • 超参数:微调使用了特定的超参数,您可以在training_script.py文件中找到这些参数。
  • 评估:在基准测试上对微调后的模型进行评估,以确保其满足我们的性能标准。