Home
avatar

小五

尝鲜: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怎么说呢,图片理解应该还好,文生图,是不是期望太高了一点。

不管怎么样,还是赞一下国产之光。

Janus Pro测试