首页 > 其他分享 >书生大模型实训营第4期—入门岛第4关:玩转HF/魔搭/魔乐社区

书生大模型实训营第4期—入门岛第4关:玩转HF/魔搭/魔乐社区

时间:2024-11-03 13:44:28浏览次数:5  
标签:文件 git 模型 魔乐 intern 实训营 Hugging HF 下载

书生大模型实训营第4期—入门岛第4关:玩转HF/魔搭/魔乐社区

任务一:模型下载

1. 使用Hugging Face平台下载模型

1.1 Hugging Face平台

Hugging Face 是一个开源人工智能平台,主要提供自然语言处理相关的模型、工具和社区资源。它最初专注于开发聊天机器人服务,但真正推动其走向主流的是Transformers库的开源。这个库可以简化使用复杂深度学习模型的过程(尤其是在NLP任务中),它的开源在机器学习领域引起了巨大轰动。如今,Hugging Face已经发展成为一个拥有超过100,000个预训练模型和10,000个数据集的平台,被誉为机器学习界的GitHub。

在正式使用之前,我们再简单介绍一下HF的Transformers库,作为HF最核心的项目,它可以:

  • 直接使用预训练模型进行推理
  • 提供大量预训练模型供用户使用
  • 使用预训练模型进行迁移学习

正式使用前我们需要去 Hugging Face官网 注册一个账号(需要魔法上网)

1.2 InternLM模型下载

internlm2_5-1_8b举例,查看Hugging Face上该模型的地址

https://huggingface.co/internlm/internlm2_5-1_8b

在这里插入图片描述

1.3 GitHub CodeSpace的使用

GitHub Codespaces是 GitHub 提供基于 Visual Studio Code的云端开发环境,允许开发者在云端创建和运行完整的开发环境,它为开发者提供了一个一致、高效且可扩展的云端开发解决方案,使开发工作更轻量便捷。

任务文档中说因为磁盘有限(10%的A100配置只有24G的内存),不建议我们在 InternStudio 上下载模型,需要使用 GitHub CodeSpace 代替(不过这东西可用的空间也只有32G,感觉没什么区别说实话)。进入CodeSpace后需要在终端中安装以下依赖方便我们后续模型的运行。

# 安装transformers
pip install transformers==4.38
pip install sentencepiece==0.1.99
pip install einops==0.8.0
pip install protobuf==5.27.2
pip install accelerate==0.33.0
1.3.1 下载internlm2_5-7b-chat的配置文件

因为个人GitHub CodeSpace硬盘空间有限(32GB可用),而7B的模型相对较大,所以我们只下载部分文件作为演示即可。这里我为了文件找起来方便,在当前目录下新建了个blog_demo4文件夹存放后续实验的代码和相关文件。

我们先新建一个 hf_download_josn.py 文件用于下载模型配置文件:

touch hf_download_josn.py

然后粘贴下面代码到该文件中:

import os
from huggingface_hub import hf_hub_download

# 指定模型标识符
repo_id = "internlm/internlm2_5-7b"

# 指定要下载的文件列表
files_to_download = [
    {"filename": "config.json"},
    {"filename": "model.safetensors.index.json"}
]

# 创建一个目录来存放下载的文件
local_dir = f"{repo_id.split('/')[1]}"
os.makedirs(local_dir, exist_ok=True)

# 遍历文件列表并下载每个文件
for file_info in files_to_download:
    file_path = hf_hub_download(
        repo_id=repo_id,
        filename=file_info["filename"],
        local_dir=local_dir
    )
    print(f"{file_info['filename']} file downloaded to: {file_path}")

hf_download_josn.py 所在文件目录下执行该文件(cd命令用来切换目录):

python hf_download_josn.py

执行完后在左侧资源管理器可以看到当前文件夹下出现了模型的配置文件(internlm2_5-7b目录下的 config.jsonmodel.safetensors.index.json

在这里插入图片描述

1.3.2 下载internlm2_5-chat-1_8b并打印示例输出

如果我们想要下载一个完整的模型文件并运行它,先创建一个py文件:

touch hf_download_1_8_demo.py

然后在文件中粘贴下面的代码:

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("internlm/internlm2_5-1_8b", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("internlm/internlm2_5-1_8b", torch_dtype=torch.float16, trust_remote_code=True)
model = model.eval()

inputs = tokenizer(["A beautiful flower"], return_tensors="pt")
gen_kwargs = {
    "max_length": 128,
    "top_p": 0.8,
    "temperature": 0.8,
    "do_sample": True,
    "repetition_penalty": 1.0
}

# 以下内容可选,如果解除注释等待一段时间后可以看到模型输出
output = model.generate(**inputs, **gen_kwargs)
output = tokenizer.decode(output[0].tolist(), skip_special_tokens=True)
print(output)

在该文件所属目录下执行该文件:

python hf_download_1_8_demo.py

等待几分钟后(CodeSpace平台没有GPU,因此我们的代码只能使用CPU进行推理,会比较慢),就能在控制台看到模型返回的结果:

在这里插入图片描述

这里以"A beautiful flower"开头,让模型对其进行续写,它最终返回了一个数学问题,这是因为InternLM的模型数学方面的能力比较强大,因此模型输出会偏向数学领域。

2. 使用魔搭社区平台下载模型

ModelScope 是一个“模型即服务”(MaaS)平台,由阿里巴巴集团的达摩院推出和维护。它旨在汇集来自AI社区的最先进的机器学习模型,并简化在实际应用中使用AI模型的流程。通过ModelScope,用户可以轻松地探索、推理、微调和部署各种AI模型。

先注册登录ModelScope平台,进入导航栏搜索 internlm2_5-chat-1_8b,由上海人工智能实验室发布的那个模型就是我们要下载的1.8b模型。我们这里使用Intern开发机进行模型下载,自行创建一个即可。

2.1 环境配置

执行下面命令下载依赖(文档中多了条激活预设环境的命令,这条命令要不要无所谓,不影响依赖的安装,我这里直接在base环境下运行的):

# 安装 modelscope
pip install modelscope -t /root/env/maas
pip install numpy==1.26.0  -t /root/env/maas
pip install packaging -t /root/env/maas

注意:为了保证能够找到我们每次装的依赖,每次新建一个终端之后都需要导出path,如果不改变终端,导出一次就够了。

export PATH=$PATH:/root/env/maas/bin
export PYTHONPATH=/root/env/maas:$PYTHONPATH

接着我们创建一个ms_demo目录用于后面的实验:

mkdir -p /root/ms_demo

2.2 下载指定的多个文件

考虑到7B的模型文件比较大,这里我们采用modelscope的cli工具来下载指定文件,在命令行输入以下命令:

modelscope download \
    --model 'Shanghai_AI_Laboratory/internlm2_5-7b-chat' \
    tokenizer.json config.json model.safetensors.index.json \
    --local_dir '/root/ms_demo'

如果你网络不是很好,可以使用下面命令下载较小的1.8b模型:

modelscope download \
    --model 'Shanghai_AI_Laboratory/internlm2_5-1_8b-chat' \
    tokenizer.json config.json model.safetensors.index.json \
    --local_dir '/root/ms_demo'

刷新一下文件目录,就能看到在ms_demo中下载了指定的json文件:

在这里插入图片描述

3. 使用魔乐社区平台下载模型

魔乐社区(Modelers)是一个提供多样化、开源模型的平台,旨在促进开发者和研究人员在最先进的模型和流行应用上进行协作。它的使用方式跟魔搭很像。

这里我们继续使用我们刚刚创建的InterStudio开发机进行模型下载,执行下面命令创建新的文件夹存储下面的实验:

mkdir ml_demo
cd ml_demo

注意,这里手册上的代码我觉得有点问题,它的文件夹是在root文件父目录同级处创建的,这样做一方面会导致你下载模型后可能找不到模型文件,因为这个文件在root目录的上级目录。而且开发机关闭后这个文件会被删掉,所以尽量还是把我们的文件放在root目录下。这里我是在root目录下创建的ml_demo文件夹。

然后我们执行下面命令下载模型:

# 确保安装git-lfs 保证大文件的正常下载
apt-get install git-lfs
git lfs install
# clone 仓库
git clone https://modelers.cn/Intern/internlm2_5-1_8b-chat.git

刷新一下文件夹,即可在ml_demo中找到下载好的模型文件:

在这里插入图片描述

任务二:模型上传

2.1 上传模型到Hugging Face

huggingface-cli 是 Hugging Face 官方提供的命令行工具,它允许用户直接从终端下载模型、数据集等资源,还可以进行登录、上传模型和数据等操作。

通过CLI上传 Hugging Face同样是跟Git相关联,通常大模型的模型文件都比较大,因此我们需要安装git lfs以支持大文件系统。安装命令如下:

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
# sudo apt-get install git-lfs # CodeSpace里面可能会有aptkey冲突且没有足够权限
git lfs install # 直接在git环境下配置git LFS
pip install huggingface_hub

然后我们使用huggingface-cli login命令进行登录,登录过程中需要输入用户的Access Tokens,我们进入个人设置页面,找到Access Token,点击create new token,创建一个类型为Write的token。

在这里插入图片描述
在这里插入图片描述
注意,token创建完毕后记得复制下来保存,关闭这个弹窗后token就不可见了

接着在CodeSpace中运行下面的命令进行登录:

git config --global credential.helper store
huggingface-cli login

在这里插入图片描述
登录时需要输入刚刚的Access Token,复制token后右键粘贴即可。(这里token是不可见的,粘贴完后回车然后输入Y即可完成登录)

这里我们创建一个新的模型库并将其拉到本地:

#intern_study_L0_4就是model_name
huggingface-cli repo create intern_study_L0_4

# 克隆到本地 your_hugging_face_name 注意替换成你自己的
git clone https://huggingface.co/{your_hugging_face_name}/intern_study_L0_4

这里文档中给的代码是错的,huggingface-cli repo create intern_study_L0_4 这行命令的作用是在你的Hugging Face上创建一个新的模型库,所以后面git clone的时候用的应该是你的Hugging Face name。

克隆好之后,刷新文件目录可以看到克隆好的intern_study_L0_4文件夹。

在这里插入图片描述
执行完上面代码后在我们HF的个人模型库中可以看到一个空的新建库:
在这里插入图片描述

我们可以把训练好的模型保存进里面,这里考虑到网速问题,只上传我们刚刚下载好的config.json,把它复制粘贴进intern_study_L0_4文件夹里,还可以写一个README文件,比如可以粘贴以下内容:

# 书生浦语大模型实战营camp4
- hugging face模型上传测试
- 更多内容请访问 https://github.com/InternLM/Tutorial/tree/camp4

然后使用下面命令进行提交:

cd intern_study_L0_4
git add .
git commit -m "add:intern_study_L0_4"
git push

这里git push可能会报错,如果报错的话执行下面命令再重新push即可。

# <repo_path>的形式为:<user_name>/intern_study_L0_4
git remote set-url origin https://<user_name>:<token>@huggingface.co/<repo_path>
git pull origin

执行完上面这些步骤后就可以在Hugging Face的个人profile里看到这个model,也可以直接将下面的Url输入到浏览器网址栏上查看:

https://huggingface.co/<user_name>/intern_study_L0_4

在这里插入图片描述

2.2 上传模型到魔搭平台

魔搭社区类似HF,也有一套创建模型的界面。

在这里插入图片描述

上传文件可以直接通过平台添加文件,也可以通过git下载模型后进行修改和上传文件。我们先创建一个自己的模型,然后把它克隆到本地。在我们创建的模型界面中有模型下载的相关命令:

在这里插入图片描述

我们这里使用Git方式下载,还是使用上一节模型下载中的开发机,在开发机中执行上面的Git指令,将项目先克隆到本地。刷新下目录就能看到克隆的项目:

在这里插入图片描述
然后我们就可以在这个文件夹内增加或者修改文件内容,这里我们上传了一些第一节中下载的权重文件和一张图片(用来渲染项目主页),并修改了README文件的一些内容。然后使用下面命令提交并上传我们的修改即可:

cd intern_study_L0_4
git add .
git commit -m "add:intern_study_L0_4"
git push

这里push的时候可能会报错,提示你没有配置git信息,我们运行下面命令配置一下即可:

git config --global user.name "Your Name"
git config --global user.email "[email protected]"

然后这里push的时候还需要你输入用户名和密码,注意:这里的密码不是你魔搭的登录密码,而是你的Git访问令牌,跟Hugging Face中的Access Token一样,使用方法跟HF一致。去个人界面找到访问令牌之后创建一个写类型的token然后复制保存下来,用户密码填这个才能成功push。

上传完后在个人模型中就能看到修改后的项目:

在这里插入图片描述

2.3 上传模型到魔乐平台

魔乐的操作跟魔搭基本一样,同样是这几个步骤:

  1. 创建模型库
  2. 克隆到本地开发机上
  3. 将自己想要上传或修改的文件放进克隆的文件夹内
  4. 提交修改并push到远程仓库

魔乐的新建项目中也有下载模型的命令,按照教程一步步走即可:

在这里插入图片描述
clone时要是遇到有关 git lfs 的报错,运行下面命令也许可以解决你的问题:

# 确保安装git-lfs 保证大文件的正常下载
apt-get install git-lfs
git lfs install

上传模型的具体操作流程这里就不赘述了,大家可以参照上面魔搭的教程。

任务三:HF Space上传部署intern_cobuild

Hugging Face Spaces 是一个允许我们轻松地托管、分享和发现基于机器学习模型的应用的平台。Spaces 使得开发者可以快速将我们的模型部署为可交互的 web 应用,且无需担心后端基础设施或部署的复杂性。

3.1 Hugging Face Spaces的使用

首先访问以下链接,进入Spaces,点击右上角的Create new Space进行Space创建:

https://huggingface.co/spaces

在创建页面中,输入项目名为intern_cobuild,并选择Static应用进行创建
在这里插入图片描述
HF Space提供GPU租用服务,创建Static应用默认选择免费的CPU配置,但是选其他SDK的话可以选不同配置的GPU:

在这里插入图片描述
创建成功后会自动跳转到一个默认的HTML页面。我们回到我们的CodeSpace,运行下面的命令接着clone项目。

# 请将<your_username>替换你自己的username
git clone https://huggingface.co/spaces/<your_username>/intern_cobuild
cd intern_cobuild

找到 intern_cobuild 文件夹下的index.html文件,修改html代码如下:

<!doctype html>
<html>
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width" />
  <title>My static Space</title>
  <style>
    html, body {
      margin: 0;
      padding: 0;
      height: 100%;
    }
    body {
      display: flex;
      justify-content: center;
      align-items: center;
    }
    iframe {
      width: 430px;
      height: 932px;
      border: none;
    }
  </style>
</head>
<body>
  <iframe src="https://colearn.intern-ai.org.cn/cobuild" title="description"></iframe>
</body>
</html>

保存后我们运行下面的命令将其push到远程仓库上:

git add .
git commit -m "update: colearn page"
git push

在push的时候如果报错:remote: Password authentication in git is no longer supported. You must use a user access token or an SSH key instead.,执行下面这条命令再push一次即可:

# <repo_path>的形式为:<user_name>/intern_cobuild
git remote set-url origin https://<user_name>:<token>@huggingface.co/<repo_path>

Access Token的获取在模型上传部分已经介绍了。

再次进入Space界面,可以看到实战营的共建活动页面说明我们部署成功了:

在这里插入图片描述


至此,书生大模型实训营第4期入门岛第4关:玩转HF/魔搭/魔乐社区任务完成~

标签:文件,git,模型,魔乐,intern,实训营,Hugging,HF,下载
From: https://blog.csdn.net/weixin_54052852/article/details/143456503

相关文章

  • Question Decomposition Improves the Faithfulness of Model-Generated Reasoning
    文章目录题目摘要简介结果相关工作结论附录题目问题分解提高了模型生成推理的准确性论文地址:https://arxiv.org/abs/2307.11768摘要    随着大型语言模型(LLM)执行越来越困难的任务,验证其行为的正确性和安全性变得越来越困难。解决此问题的一种方法是促......
  • 【Unity寻路插件】A* Pathfinding Project Pro 快速提升游戏中角色的移动和导航能力
    A*PathfindingProjectPro是一款强大的Unity插件,专为开发者提供高效的路径finding(寻路)解决方案。它广泛应用于各种类型的游戏,包括角色扮演游戏、策略游戏、实时战斗游戏等,能够显著提升游戏中角色的移动和导航能力。主要特点:1.高效的寻路算法A*算法实现:插件基于经典......
  • 万字长文梳理LLM+RL(HF)的脉络
    作者:王小惟Weixun原文:https://zhuanlan.zhihu.com/p/1686790674片面的脉络梳理,主要是希望能帮助大家建立一个更全局的视角,因为篇幅有限,仅包含了支撑脉络的工作,同时也没有含括最新的工作,如有遗漏,望各位同仁包涵。总体的思维脑图地址(可能需要翻墙):raw.githubusercontent.com......
  • HFSS实战项目——Ku波段微带发夹线滤波器
    1引言发夹型谐振器时通过适当的耦合拓扑结构实现的滤波器,它是半波长耦合微带线滤波器的一种改良结构,结构比较紧凑,易于集成、尺寸较小;另一方面,其耦合线终端开路,不需要过孔接地,这消除了过地孔引入的误差,具有更好的电性能,在微波屏幕电路的设计中运用广泛。1.1微带滤波器基本......
  • HFSS实战项目——高带外抑制特性SIW带通滤波器
    1.引言高频应用中,由于波长过小,过于高的容差要求常常使微带线失效。波导就常用于高频情况,但是波导体积大,不易于集成。所以产生了一种新的观点:基片集成波导SIW。SIW是介于微带与介质填充波导之间的一种传输线。 SIW兼顾传统波导和微带传输线的优点,可实现高性能微波毫米波平面......
  • 【Unity寻路插件】A Pathfinding Project Pro
    A*PathfindingProjectPro是一款功能强大且高度优化的路径寻路插件,专为Unity开发者打造。它基于A*算法,广泛应用于游戏AI和实时策略游戏的寻路需求,尤其适合需要高效处理复杂路径计算的大型项目。该插件不仅支持常见的二维和三维场景,还提供多种寻路算法、性能优化工具......
  • 百度:LLM从宏动作中进行RLHF
    ......
  • 排查sshfs挂载失败的问题
    排查sshfs挂载失败的问题写代码在Linux上运行,但是熟悉的IDE(比如VScode)在自己的电脑上,可以使用sshfs把linux上的目录挂载到本地,再用VScode打开即可,可以使用下面的命令:sshfs-odebug,sshfs_debug,loglevel=debug-orw,allow_other,uid=1190,gid=1190,reconnect,ServerAliveInte......
  • 大模型训练显存需求分析指南:从SFT到RLHF的实践之路
    引言随着大模型技术的快速发展,越来越多的研究者和开发者开始尝试自己训练或微调大模型。然而,大模型训练最大的门槛之一就是算力资源,特别是GPU显存的需求。本文将从实践角度出发,详细分析大模型训练中的显存需求,帮助读者更好地规划自己的训练资源。显存需求概览在大模型训......
  • 如何在算家云搭建FlashFace(图像生成)
    一、FlashFace简介FlashFace专门用于制作个性化头像,提供了多种发型、‌头型、‌五官外形供用户自由搭配。‌允许用户通过提供一张或几张参考人脸图像和文字提示,‌轻松地即时个性化自己的照片。‌使用几张图片就可以生成多样的人像个性化结果,具有以下特征:使用一张或多张参......