本地部署DeepSeek开源多模态大模型Janus-Pro-7B实操
Janus-Pro-7B介绍
Janus-Pro-7B 是由 DeepSeek 开发的多模态 AI 模型,它在理解和生成方面取得了显著的进步。这意味着它不仅可以处理文本,还可以处理图像等其他模态的信息。
模型主要特点:Permalink
统一的架构: Janus-Pro 采用单一 transformer 架构来处理文本和图像信息,实现了真正的多模态理解和生成。
解耦的视觉编码: 为了更好地平衡理解和生成任务,Janus-Pro 将视觉编码解耦为独立的路径,提高了模型的灵活性和性能。
强大的性能: 在多个基准测试中,Janus-Pro 的性能超越了之前的统一模型,甚至可以与特定任务的模型相媲美。
开源: Janus-Pro-7B 是开源的,这意味着研究人员和开发者可以自由地访问和使用它,推动 AI 领域的创新。
具体来说,Janus-Pro-7B 有以下优势:
图像理解: 能够准确地识别和理解图像中的对象、场景和关系。
图像生成: 可以根据文本描述生成高质量的图像,甚至可以进行图像编辑和转换。
文本生成: 可以生成流畅、连贯的文本,例如故事、诗歌、代码等。
多模态推理: 可以结合文本和图像信息进行推理,例如根据图像内容回答问题,或者根据文本描述生成图像。
与其他模型的比较:
超越 DALL-E 3 和 Stable Diffusion: 在 GenEval 和 DPG-Bench 等基准测试中,Janus-Pro-7B 的性能优于 OpenAI 的 DALL-E 3 和 Stability AI 的 Stable Diffusion。
基于 DeepSeek-LLM: Janus-Pro 建立在 DeepSeek-LLM-1.5b-base/DeepSeek-LLM-7b-base 的基础上,并对其进行了多模态扩展。
应用场景:
Janus-Pro-7B 具有广泛的应用场景,例如:
内容创作: 可以帮助用户生成高质量的图像、文本和其他多媒体内容。
教育: 可以用于创建交互式学习体验,例如根据文本描述生成图像,或者根据图像内容回答问题。
客户服务: 可以用于构建更智能的聊天机器人,能够理解和回应用户的多模态查询。
辅助设计: 可以帮助设计师生成创意概念,并将其转化为可视化原型
1 启动Anaconda环境
2 进入命令环境
conda create -n myenv python=3.10 -y
git clone https://github.com/deepseek-ai/Janus.git
cd Janus
pip install -e .
pip install webencodings beautifulsoup4 tinycss2
pip install -e .[gradio]
pip install 'pexpect>4.3'
python demo/app_januspro.py
3 遇到默认配置下C盘磁盘空间不足问题
(myenvp) C:\Users\Administrator>python demo/app_januspro.py
python: can't open file 'C:\\Users\\Administrator\\demo\\app_januspro.py': [Errno 2] No such file or directory
(myenvp) C:\Users\Administrator>e:
(myenvp) E:\>cd ai
(myenvp) E:\AI>cd Janus
(myenvp) E:\AI\Janus>dir
驱动器 E 中的卷是 chia-12T-1
卷的序列号是 0AF0-159B
E:\AI\Janus 的目录
2025/01/31 12:26 <DIR> .
2025/01/30 00:53 <DIR> ..
2025/01/30 00:53 115 .gitattributes
2025/01/30 00:53 7,301 .gitignore
2025/01/30 01:47 <DIR> .gradio
2025/01/30 01:18 <DIR> .locks
2025/01/31 12:26 0 4.3'
2025/01/30 00:53 <DIR> demo
2025/01/30 00:53 4,515 generation_inference.py
2025/01/30 00:53 <DIR> images
2025/01/30 00:53 2,642 inference.py
2025/01/30 00:53 5,188 interactivechat.py
2025/01/30 01:04 <DIR> janus
2025/01/31 12:25 <DIR> janus.egg-info
2025/01/30 00:53 2,846,268 janus_pro_tech_report.pdf
2025/01/30 00:53 1,065 LICENSE-CODE
2025/01/30 00:53 13,718 LICENSE-MODEL
2025/01/30 00:53 3,069 Makefile
2025/01/30 01:47 <DIR> models--deepseek-ai--Janus-Pro-7B
2025/01/30 00:53 1,111 pyproject.toml
2025/01/30 00:53 26,742 README.md
2025/01/30 00:53 278 requirements.txt
2025/01/30 01:18 1 version.txt
14 个文件 2,912,013 字节
9 个目录 9,387,683,614,720 可用字节
3.1 设置HF_DATASETS_CACHE环境变量没解决问题
(myenvp) E:\AI\Janus>set HF_DATASETS_CACHE="E:\AI\Janus"
(myenvp) E:\AI\Janus>python demo/app_januspro.py
Python version is above 3.10, patching the collections module.
D:\anaconda3\envs\myenvp\lib\site-packages\transformers\models\auto\image_processing_auto.py:590: FutureWarning: The image_processor_class argument is deprecated and will be removed in v4.42. Please use `slow_image_processor_class`, or `fast_image_processor_class` instead
warnings.warn(
Downloading shards: 0%| | 0/2 [00:00<?, ?it/s]D:\anaconda3\envs\myenvp\lib\site-packages\huggingface_hub\file_download.py:651: UserWarning: Not enough free disk space to download the file. The expected file size is: 9988.18 MB. The target location C:\Users\Administrator\.cache\huggingface\hub\models--deepseek-ai--Janus-Pro-7B\blobs only has 8154.37 MB free disk space.
warnings.warn(
pytorch_model-00001-of-00002.bin: 37%|███████████████▉ | 3.71G/9.99G [00:05<02:38, 39.5MB/s]
Downloading shards: 0%| | 0/2 [00:06<?, ?it/s]
Traceback (most recent call last):
File "E:\AI\Janus\demo\app_januspro.py", line 19, in <module>
vl_gpt = AutoModelForCausalLM.from_pretrained(model_path,
File "D:\anaconda3\envs\myenvp\lib\site-packages\transformers\models\auto\auto_factory.py", line 564, in from_pretrained
return model_class.from_pretrained(
File "D:\anaconda3\envs\myenvp\lib\site-packages\transformers\modeling_utils.py", line 3944, in from_pretrained
resolved_archive_file, sharded_metadata = get_checkpoint_shard_files(
File "D:\anaconda3\envs\myenvp\lib\site-packages\transformers\utils\hub.py", line 1098, in get_checkpoint_shard_files
cached_filename = cached_file(
File "D:\anaconda3\envs\myenvp\lib\site-packages\transformers\utils\hub.py", line 403, in cached_file
resolved_file = hf_hub_download(
File "D:\anaconda3\envs\myenvp\lib\site-packages\huggingface_hub\utils\_validators.py", line 114, in _inner_fn
return fn(*args, **kwargs)
File "D:\anaconda3\envs\myenvp\lib\site-packages\huggingface_hub\file_download.py", line 860, in hf_hub_download
return _hf_hub_download_to_cache_dir(
File "D:\anaconda3\envs\myenvp\lib\site-packages\huggingface_hub\file_download.py", line 1009, in _hf_hub_download_to_cache_dir
_download_to_tmp_and_move(
File "D:\anaconda3\envs\myenvp\lib\site-packages\huggingface_hub\file_download.py", line 1543, in _download_to_tmp_and_move
http_get(
File "D:\anaconda3\envs\myenvp\lib\site-packages\huggingface_hub\file_download.py", line 452, in http_get
for chunk in r.iter_content(chunk_size=constants.DOWNLOAD_CHUNK_SIZE):
File "D:\anaconda3\envs\myenvp\lib\site-packages\requests\models.py", line 820, in generate
yield from self.raw.stream(chunk_size, decode_content=True)
File "D:\anaconda3\envs\myenvp\lib\site-packages\urllib3\response.py", line 1066, in stream
data = self.read(amt=amt, decode_content=decode_content)
File "D:\anaconda3\envs\myenvp\lib\site-packages\urllib3\response.py", line 955, in read
data = self._raw_read(amt)
File "D:\anaconda3\envs\myenvp\lib\site-packages\urllib3\response.py", line 879, in _raw_read
data = self._fp_read(amt, read1=read1) if not fp_closed else b""
File "D:\anaconda3\envs\myenvp\lib\site-packages\urllib3\response.py", line 862, in _fp_read
return self._fp.read(amt) if amt is not None else self._fp.read()
File "D:\anaconda3\envs\myenvp\lib\http\client.py", line 466, in read
s = self.fp.read(amt)
File "D:\anaconda3\envs\myenvp\lib\socket.py", line 717, in readinto
return self._sock.recv_into(b)
File "D:\anaconda3\envs\myenvp\lib\ssl.py", line 1307, in recv_into
return self.read(nbytes, buffer