快速下载大模型的方法

news2024/11/18 21:38:44

现在,每天都有各种大模型不断涌现,这些模型文件通常都很大。如何快速又靠谱地下载这些开源大模型,放到我们的环境中,进行后续的微调、量化和部署工作呢?以下是我的一些经验分享。

准备 Docker 基础环境

首先,从 Docker Hub 拉取一个精简版的 Python 镜像,

docker pull python:3.10-slim

然后,创建并运行容器,这里有两种方法,一种是启动一个临时容器,将当前工作目录挂载到容器的 /models 目录,并启动 bash 会话。

docker run --rm -it -v `pwd`:/models python:3.10-slim bash

另一种是后台运行容器,适合下载模型时间比较长的场景,启动一个名为 downloader 的容器,将当前工作目录挂载到容器的 /models 目录,并在后台运行 tail -f /etc/hosts 命令以保持容器运行。

docker run -d --name=downloader -v `pwd`:/models python:3.10-slim tail -f /etc/hosts

接着进入后台运行中的 downloader 容器,更换镜像源,加速下载。

docker exec -it downloader bash
sed -i 's/snapshot.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list.d/debian.sources
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

最后,别忘记进入工作目录 /models ,开始后续的大模型下载。

cd /models

Hugging Face 社区模型的下载

官方 CLI 程序 Huggingface Hub

首先,在上面的 Docker 容器环境中安装官方 CLI 工具,

pip install huggingface_hub[cli]

我们以通义千问的 Qwen2-7B 为例,来看看这个工具的使用。

Qwen2-7B 的 Hugging Face 网址是 https://huggingface.co/Qwen/Qwen2-7B ,将网址中的“组织和项目名”复制出来,然后拼在命令中就能够开始模型的下载了。

huggingface-cli download Qwen/Qwen2-7B

但是,使用默认命令来下载会将下载的模型保存在你的根目录的缓存文件夹中,并且会使用 Git Blob 来保存模型文件,存储空间比直接下载模型要大不少。

所以我们可以添加一些额外参数,来完成更高效率的下载,

huggingface-cli download Qwen/Qwen2-7B --local-dir=./models/ --cache-dir=./cache --local-dir-use-symlinks=False --resume-download

在上面的命令中,我将模型下载的目标目录和下载缓存目录设置到当前目录下, --local-dir-use-symlinks=False 表示我们下载的文件,不使用符号链接来指向缓存目录中的文件,而是保存到本地目录,方便后续上传到服务器。 --resume-download 选项启用断点续传,如果之前下载过程因某种原因中断,将尝试从中断点继续下载。

如果你只想下载指定的文件,可以用以下命令,

# 下载 Qwen/Qwen2-7B/model-00001-of-00004.safetensors
huggingface-cli download Qwen/Qwen2-7B model-00001-of-00004.safetensors --local-dir=./models/ --cache-dir=./cache --local-dir-use-symlinks=False --resume-download

如果我们需要下载在 Hugging Face 上需要申请许可或付费才能使用的模型,可以在上述命令的最后添加一个 token 参数:

huggingface-cli download Qwen/Qwen2-7B --local-dir=./models/ --cache-dir=./cache --local-dir-use-symlinks=False --resume-download --token YOUR_TOKEN_HERE

新工具 HF Transfer

首先,安装 HF Transfer ,

pip install huggingface_hub[cli] hf_transfer

来看看新版工具 HF Transfer 的使用,

HF_HUB_ENABLE_HF_TRANSFER=1 huggingface-cli download Qwen/Qwen2-7B --local-dir=./models/ --cache-dir=./cache --local-dir-use-symlinks=False

新的 HF Transfer 工具旨在加快从 Hugging Face Hub 下载和上传文件的过程,特别是在高带宽场景中有益。但是,它目前不支持 --resume-download 选项。如果下载中断,该工具无法从中断处恢复,而是会退回到 huggingface_hub 提供的常规下载方法。这意味着你需要删除所有不完整的文件并从头开始重新下载,以确保下载完整且正确。

社区爱好者的下载加速器 HF Mirror

搭配社区爱好者提供的镜像,可以加速模型的下载,我们只需要在上面的下载命令前面加上一个环境变量就行啦:

HF_ENDPOINT=https://hf-mirror.com huggingface-cli download Qwen/Qwen2-7B --local-dir=./models/ --cache-dir=./cache --local-dir-use-symlinks=False --resume-download

ModelScope 魔搭社区模型的下载

ModelScope 有类似 Hugging Face Hub CLI 的工具,开源在 GitHub 上 https://github.com/modelscope/modelscope ,有类似的功能:支持上传和下载模型。

想要使用魔搭社区的模型,同样需要先完成工具的安装,

pip install modelscope

如果只安装 ModelScope 的核心框架,下载模型时会提示缺少依赖。

它提供了 CLI 下载工具,我们使用 ModelScope 下载上文同款模型 Qwen2-7B :

modelscope download --model 'Qwen/Qwen2-7B' --include '*.json' --local_dir './local_dir' --cache_dir './cache_dir'

其中, --include 过滤指定文件, cache_dirlocal_dir 同时指定, local_dir 优先级高, cache_dir 将被忽略,模型文件将被下载在 ./local_dir

它也提供了调用 Python 代码来下载的方式,

from modelscope import snapshot_download
snapshot_download('qwen/Qwen2-7B', cache_dir="./models/")

以上是我的一些经验,希望对喜欢折腾模型的你有帮助,大家下载大模型都很快。


微信公众号「padluo」,分享数据科学家的自我修养,既然遇见,不如一起成长。关注【老罗说AI】公众号,后台回复【文章】,获得整理好的【老罗说AI】文章全集。

数据分析二维码.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1991320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

个人知识库与RAG的技术

构建个人知识库时,采用RAG结合LangChain的方法极为有效。RAG,即检索增强生成技术,是一种前沿的自然语言处理手段,它融合了信息检索的精确匹配与语言模型的高效文本生成,为处理自然语言相关任务提供了一种既灵活又准确的…

java~泛型

目录 泛型 泛型的声明 泛型的实例化 泛型的使用细节 自定义泛型类 自定义泛型接口 自定义泛型方法 泛型的继承和通配符 Junit 单元测试类 泛型 检查添加元素的类型 减少了类型转换的次数&#xff0c;直接对这个类型进行遍历&#xff0c;例如arraylist<>() publ…

Python酷库之旅-第三方库Pandas(072)

目录 一、用法精讲 291、pandas.Series.dt.round函数 291-1、语法 291-2、参数 291-3、功能 291-4、返回值 291-5、说明 291-6、用法 291-6-1、数据准备 291-6-2、代码示例 291-6-3、结果输出 292、pandas.Series.dt.floor函数 292-1、语法 292-2、参数 292-3、…

贪吃蛇游戏的实现:C++ 控制台版

功能概述 控制蛇的移动&#xff1a;使用WASD键控制蛇的移动方向。随机生成食物&#xff1a;蛇吃到食物后&#xff0c;食物会在游戏区域内随机生成。显示分数&#xff1a;游戏中会显示当前分数。游戏结束条件&#xff1a;当蛇碰到自己或走出边界时&#xff0c;游戏结束并显示“…

从巴黎到乐清,奥运精神引领全民健身新风尚!

16位火炬手接力&#xff0c;乐清点燃全民健身新篇章&#xff01; 作者&#xff1a;华夏之音总监&#xff0f;李望 在巴黎奥运会如火如荼进行的第11天&#xff0c;中国体育代表团以22枚金牌的骄人战绩领跑金牌榜&#xff0c;每一枚金牌都闪耀着中华体育精神的璀璨光芒&#xff…

c++ 连接mysql

其实就是MYsql c语言的API #define _CRT_SECURE_NO_WARNINGS 1 #define HOST "192.168.226.1" #define USER "root" #define PASSWORD "123456" #define PORT 3066#include <iostream> #include <stdlib.h> #include <mysql.…

【北斗授时服务】NTP网络时间服务器 安徽京准智造

【北斗授时服务】NTP网络时间服务器 安徽京准智造 【北斗授时服务】NTP网络时间服务器 安徽京准智造 一、NTP网络时间服务器产品介绍&#xff1a; NTP网络时间服务器是针对计算机、自动化装置等进行校时而研发的高科技设备&#xff0c;该产品可从GPS卫星&#xff08;北斗卫星、…

数据采集工具之Canal

本文主要介绍canal采集mysql数据的tcp、datahub(kafka)模式如何实现 1、下载canal https://aliyun-datahub.oss-cn-hangzhou.aliyuncs.com/tools/canal.deployer-1.1.5-SNAPSHOT.tar.gz 2、TCP模式的实现 a、canal.properties 打开看看即可&#xff0c;不需要调整 ######…

蚁群求解旅行商问题(TSP)的MATLAB例程

程序概况 输入需要经过的节点坐标&#xff1a; 运行程序后&#xff0c;即可得到&#xff1a; 运行结果 左图为遍历各点的运动轨迹&#xff0c;最终会回到起点右图为平均距离&#xff08;红线&#xff09;和最短距离在迭代时的变化情况 源代码 代码下载链接如下&#xff1a…

【工具类】JAVA (Android Studio )+ JS 加密解密 AES + Base 64

JAVA &#xff08;Android Studio &#xff09; JS 加密解密 AES Base 64 前言JAVA 代码&#xff08;解密&#xff09;JS代码&#xff08;加密&#xff09; 前言 整个过程&#xff1a; JS 接口先用AES加密&#xff0c;然后加密内容转Base64 编码&#xff1b;JAVA进行Base64解…

虹科干货 | 如何确保干冰运输的安全和稳定?

在上篇文章中&#xff0c;我们介绍了液氮罐运输和存储温度监测解决方案&#xff0c;本文我们将会了解医药供应链中干冰运输和温度监测的关键要点。 干冰在医药行业的应用 干冰是固体二氧化碳&#xff0c;当表面温度为 -78.5℃时&#xff0c;一块冷冻的干冰会直接转变为气体&am…

Ubuntu-18.04.1安装JetBrains PyCharm 2018.1.6 专业版(永久破解方法)

软件安装包下载地址&#xff1a;Other Versions - PyCharm 将安装包放置Ubuntu系统中解压&#xff0c;到bin目录下找到pycharm.sh即可打开。 补丁破解方式&#xff08;需关闭软件pycharm&#xff0c;否则会打不开pycharm&#xff01;&#xff01;&#xff01;&#xff09;&am…

昂科烧录器支持MindMotion灵动微电子的32位微控制器MM32F5287L9P

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表&#xff0c;其中MindMotion灵动微电子的32位微控制器MM32F5287L9P已经被昂科的通用烧录平台AP8000所支持。 MM32F5287L9P搭载Armv8-M 架构“星辰”STAR-MC1处理器&#xff0c;最高工作频率可达…

CSS技巧专栏:一日一例 20-纯CSS实现点击会凹陷的按钮

本例图片 案例分析 其实这个按钮非常的简单啊&#xff0c;主要就是利用了box-shadow的inset。 布局代码 <button class"base">凹下的按钮</button> 基础样式 :root{--main-bg-color: #dcdcdc; /* 将页面背景色调整为浅灰色 */--color:#000;--hover-…

Cesium手动建模模型用Cesiumlab转3D Tiles模型位置不对,调整模型位置至指定经纬度

Cesium加载3Dtiles模型的平移和旋转_3dtiles先旋转再平移示例-CSDN博客 Cesium 平移cesiumlab生产的3Dtiles切片模型到目标经纬度-CSDN博客 【ArcGISCityEngine】自行制作Lod1城市大尺度白膜数据_cityengine 生成指定坐标集指定区域的白模-CSDN博客 以上次ArcGISCityEngine制…

IEEE Transactions on Intelligent Transportation Systems投稿指南

投稿记录 submitted 2024-5-29 Awaiting AE Assignment 2024-6-11 Under review 2024-6-15 Awaiting EIC Decision 2024-6-24 感觉要拒稿的节奏 Resubmit To Another Journal 2024-6-25 与期刊不符合 下载模板 IEEE Transactions on Intelligent Transportation Syste…

java.lang.NoClassDefFoundError: ch/qos/logback/core/util/StatusPrinter2

1、问题 SpringBoot升级报错&#xff1a; Exception in thread "main" java.lang.NoClassDefFoundError: ch/qos/logback/core/util/StatusPrinter2 类找不到&#xff1a; Caused by: java.lang.ClassNotFoundException: ch.qos.logback.core.util.StatusPrinter22、…

【Vue3】Pinia $subscribe

【Vue3】Pinia $subscribe 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子…

前端框架(三件套)

学习网站 HTML 系列教程&#xff08;有广告&#xff09; HTML&#xff08;超文本标记语言&#xff09; | MDN (mozilla.org)&#xff08;英文不太友好&#xff09; 1.HTML5 & CSS3 1.1HTML5表格 <!DOCTYPE html> <html lang"en"> <head>…

常见框架漏洞详解②!!

中间件 中间件&#xff08;英语&#xff1a;Middleware&#xff09;是提供系统软件和应⽤软件之间连接的软件&#xff0c;以便于软件各部 件之间的沟通。 中间件处在操作系统和更⾼⼀级应⽤程序之间。他充当的功能是&#xff1a;将应⽤程序运⾏环境与操作系统隔离&#xff0c;…