尝鲜:Mac本地推理体验DeepSeek最新多模态模型Janus-Pro-7B
大过年的,DeepSeek真是不让人好过,三天两头出新玩具。
前两天阿里出的Qwen2.5-VL,还没开始火,又要被DeepSeek压下去了。
最新的Janus-Pro-7B,7B 参数视觉多模态模型,普通电脑也能起飞!
本文,将一起体验一下DeepSeek最新的Janus-Pro-7B,试试图像生成和图像识别。
由于模型在HuggingFace上,在Ollama和LM Studio上
运行方式
1、量化转换为gguf格式,下载到本地通过Ollama和LM Studio运行。这2款软件本身都只支持gguf格式,但是今天的主角Janus-Pro-7B是pytorch的.bin格式。所以需要进行转换量化。
2、直接使用HuggingFace的推理程序,简单体验。
量化转换比较费时,今天我们将使用第2种方式来简单体验。抽空再将方式一写出来玩玩。
第一步:下载模型
由于魔法问题,我们需要使用国内镜像进行下载。不然HuggingFace是无法访问的。
整个流程在这里有使用文档:https://hf-mirror.com/
先安装HuggingFace-Cli命令行工具。建议切换到虚拟环境中使用。
pip install -U "huggingface_hub[cli]"
然后,在系统环境变量中添加镜像
# HuggingFace
export HF_ENDPOINT=https://hf-mirror.com
怎么弄呢,如果安装过VSCode,使用的iTerm。可以直接
code ~/.zshrc
在文件最后加上这个镜像切换即可。加上之后新开一个窗口,就可以使用了。
也可以加到: ~/.bash_profile 文件最后。
这里有一种更优雅的方式。在这个文件最后加一行: source /Users/kyle/MyBackups/env.sh
然后在env.sh中,将自己常用的变量加上。然后可以使用软件同步这个文件,这样以后换电脑也方便了不是。
然后在命令行中,通过下面的命令,下载模型文件:
huggingface-cli download --resume-download deepseek-ai/Janus-Pro-7B --local-dir "/Users/kyle/AIModel/DeepSeekAI/Janus-Pro-7B"
—local-dir是下载到的本地目录,自己设置自己的就好。
模型文件总共15GB,稍等一会儿。
.bin文件,就是PyTorch格式的模型文件。下面开搞。
第二步:模型体验
1、克隆官方示例
git clone https://github.com/deepseek-ai/Janus.git
2、用pycharm打开。 点击右下角的添加解释器,选择Add New Interpreter,再点击Add Local Interpreter添加本地解释器。
然后我使用的miniconda,就新建一个环境
推荐使用的python版本是3.10。目前的大模型基本是以3.10的python为主。
3、安装依赖包 点击左下角的控制台,输入:
pip install -e .
即可安装相关依赖。
4、测试推理, 网上找一个小猫的照片,改名cat.jpg,放到代码根目录
修改文件:inference.py
修改3处: a、model_path修改为本地的完整模型路径即可 b、添加CPU推理到from_pretrained,如果使用mps使用mps。 c、vl_gpt = vl_gpt.to(torch.bfloat16).cuda().eval() 修改为下面: vl_gpt = vl_gpt.to(torch.bfloat16).cpu().eval() # 修改为CPU vl_gpt = vl_gpt.to(torch.bfloat16).to(“mps”).eval() # 修改为MPS加速,Mac Meta芯片独有 d、提示词修改 e、修改图片文件的路径,自己的图在哪就是哪。
因为mac实现不了Cuda显卡推理。我们只能使用CPU或MPS推理,实践证书CPU特别慢,mps会好很多。MPS是Mac的苹果芯片自带的加速配置。
推荐使用mps进行推理。
如果提示pytorch没有安装好。可以使用:
pip install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu
进行安装
5、起飞,运行程序。(CPU推理会比较慢。MPS会很快。)
再换个图片
Assistant: 这张图片展示了一个展览或展示会场景。前景中有一台机械臂,上面标有“MAXXOR”字样,这可能是一个品牌或公司名称。机械臂正在操作一个透明容器,里面似乎装有一些物品。背景中可以看到一些人在交流和参观,以及一些展示台和展板。整体环境看起来像是一个科技展览或工业展览会。
6、继续体验生成图片的功能,听说也挺厉害。 修改文件:generation_inference.py 这个是负责图片生成的。
按下图修改下面几处: a、model_path是本地路径 b、from_pretrained是改为CPU推理或mps推理
c、vl_gpt改为cpu推理 d、tokens = torch.zeros((parallel_size2, len(input_ids)), dtype=torch.int).cuda() 改为CPU推理 tokens = torch.zeros((parallel_size2, len(input_ids)), dtype=torch.int).cpu()
或MPS推理 tokens = torch.zeros((parallel_size*2, len(input_ids)), dtype=torch.int).to(“mps”)
e、generated_tokens = torch.zeros((parallel_size, image_token_num_per_image), dtype=torch.int).cuda() 修改为使用CPU推理: generated_tokens = torch.zeros((parallel_size, image_token_num_per_image), dtype=torch.int).cpu() 或者使用mps推理 generated_tokens = torch.zeros((parallel_size, image_token_num_per_image), dtype=torch.int).to(“mps”)
f、提示词,想要生成什么图片
还有
保存运行。电脑感觉要冒烟了。。。。。64G内存都有点困难,直接推理还是麻烦。
CPU推理,再大的内存也抗不住,我又换成mps推理,速度一下就上来了。推荐直接用MPS
有网友测试:MPS加速仅仅比CPU花费时间减少一半左右。Mac要手动推理,尽量用MPS了。
如果想要使用,建议使用更小的模型,比如1.5B那个。或者等GGUF格式的模型发布,下载到Ollama和LM Studio体验。
如果想自己做GGUF,可以使用llama.cpp,找算力机器进行模型转换,也比较简单,就是麻烦一些。modelscope和百度云,提供云算力主机,每天有4小时的免费时间,可以使用来进行一些转换操作。还有Kaggle也有。
modelscope限量有32G显卡的主机,应该是够做转换。只要换成GGUF格式,本地应该可以正常跑。
7、最后生成的图片,让我脑瓜疼
A、提示词:一只小狗
这只狗感觉这么诡异呢。
可能是中文提示词的问题,换成英文的,重来
B、网上找的美女提示词, A girl, Asian, long hair, 18 years old, full body, luxurious red satin dress skirt, happiness smile,light breeze, white background, studio shooting, fashion modern, elegant, her skin is clear and smooth, she has a delicate heart - shaped face, full lips and big eyes. The natural sun shines - ar 3: 4
生成结果:
什么鬼,我要做恶梦。
后记
手动推理,利用不了电脑的加速功能,Mac上推理没有cuda支持还是很困难。推荐gguf模型文件出来之后使用LM Studio或者ollama进行调用。
对推理进行加速和优化,会比自己直接通过代码跑更适合。
Janus-Pro-7B怎么说呢,图片理解应该还好,文生图,是不是期望太高了一点。
不管怎么样,还是赞一下国产之光。