iis如何做网站,搜索引擎优化的实验结果分析,我想在百度上发布广告怎么发,wordpress百度链接提交Ubuntu20.04安装Janus-Pro-7B详细教程 想在自己的电脑上体验既能看懂图片又能生成图片的AI模型吗#xff1f;Janus-Pro-7B就是这样一个神奇的多模态模型#xff0c;它不仅能理解图片内容#xff0c;还能根据文字描述生成图片。今天我就带大家在Ubuntu 20.04系统上一步步安装…Ubuntu20.04安装Janus-Pro-7B详细教程想在自己的电脑上体验既能看懂图片又能生成图片的AI模型吗Janus-Pro-7B就是这样一个神奇的多模态模型它不仅能理解图片内容还能根据文字描述生成图片。今天我就带大家在Ubuntu 20.04系统上一步步安装这个模型整个过程跟着做就行不需要太多技术背景。1. 准备工作了解Janus-Pro-7B在开始安装之前我们先简单了解一下Janus-Pro-7B是什么。你可以把它想象成一个“全能型”AI助手它有两个主要能力看懂图片你给它一张照片它能告诉你照片里有什么甚至能回答关于照片的问题生成图片你描述一个场景比如“一只戴着帽子的猫在弹吉他”它就能生成对应的图片这个模型有70亿个参数听起来很大但实际上在现在的硬件上跑起来还算友好。它基于DeepSeek的架构采用了独特的视觉编码解耦设计简单说就是它处理“看懂”和“生成”这两件事用了不同的方式但又在同一个框架里这样既灵活又高效。2. 系统环境检查与准备安装前我们先确认一下你的Ubuntu 20.04系统是否满足基本要求。打开终端按CtrlAltT我们来一步步检查。2.1 检查Python版本Janus-Pro-7B需要Python 3.8或更高版本。在终端里输入python3 --version如果显示的是Python 3.8.x或更高那就没问题。如果版本太低需要先升级Pythonsudo apt update sudo apt install python3.9 python3.9-venv python3.9-dev2.2 检查CUDA和GPU这个模型需要GPU才能跑得动我们先看看你的显卡是否支持CUDAnvidia-smi如果看到类似下面的输出说明你的NVIDIA显卡驱动和CUDA已经安装好了----------------------------------------------------------------------------- | NVIDIA-SMI 525.147.05 Driver Version: 525.147.05 CUDA Version: 12.0 | |--------------------------------------------------------------------------- | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | || | 0 NVIDIA GeForce ... Off | 00000000:01:00.0 On | N/A | | 30% 45C P2 72W / 250W | 2345MiB / 12288MiB | 15% Default | | | | N/A | ---------------------------------------------------------------------------如果提示“command not found”说明你需要先安装NVIDIA驱动和CUDA。对于Ubuntu 20.04可以这样安装# 添加NVIDIA驱动PPA sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update # 安装驱动这里以525版本为例你可以根据显卡型号选择 sudo apt install nvidia-driver-525 # 安装CUDA Toolkit 11.8Janus-Pro推荐版本 wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run sudo sh cuda_11.8.0_520.61.05_linux.run安装完成后记得把CUDA添加到环境变量。编辑~/.bashrc文件nano ~/.bashrc在文件末尾添加export PATH/usr/local/cuda-11.8/bin${PATH::${PATH}} export LD_LIBRARY_PATH/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}}保存后执行source ~/.bashrc2.3 创建虚拟环境为了避免不同项目的依赖冲突我们创建一个专门的虚拟环境# 安装虚拟环境工具 sudo apt install python3.9-venv # 创建名为janus的虚拟环境 python3.9 -m venv janus_env # 激活虚拟环境 source janus_env/bin/activate激活后你的命令行前面会出现(janus_env)的提示表示现在在这个虚拟环境里操作。3. 安装依赖和PyTorch现在我们来安装Janus-Pro-7B需要的各种依赖包。3.1 安装PyTorchPyTorch是运行AI模型的基础框架。根据你的CUDA版本选择合适的安装命令# 如果你安装的是CUDA 11.8 pip install torch2.2.2 torchvision0.17.2 torchaudio2.2.2 --index-url https://download.pytorch.org/whl/cu118 # 如果你安装的是CUDA 12.1 pip install torch2.2.2 torchvision0.17.2 torchaudio2.2.2 --index-url https://download.pytorch.org/whl/cu121安装完成后验证一下python3 -c import torch; print(fPyTorch版本: {torch.__version__}); print(fCUDA可用: {torch.cuda.is_available()})如果显示CUDA可用为True说明PyTorch和CUDA配置正确。3.2 安装其他基础依赖# 升级pip pip install --upgrade pip # 安装基础工具 pip install numpy1.26.3 # 注意Janus-Pro需要1.x版本的numpy pip install pillow pip install tqdm pip install requests pip install huggingface-hub4. 下载和安装Janus-Pro-7B现在我们来获取Janus-Pro-7B的代码和模型。4.1 下载源代码从GitHub克隆Janus的代码仓库# 克隆代码 git clone https://github.com/deepseek-ai/Janus.git cd Janus # 安装Janus的Python包 pip install -e .这个-e参数表示“可编辑安装”这样你修改代码后不需要重新安装。4.2 下载模型文件Janus-Pro-7B的模型文件比较大大约14GB我们可以从Hugging Face下载# 安装transformers库 pip install transformers # 创建模型保存目录 mkdir -p ~/.cache/huggingface/hub/models--deepseek-ai--Janus-Pro-7B cd ~/.cache/huggingface/hub/models--deepseek-ai--Janus-Pro-7B # 使用git-lfs下载大文件如果没有安装git-lfs先安装sudo apt install git-lfs git lfs install git clone https://huggingface.co/deepseek-ai/Janus-Pro-7B .如果下载速度慢也可以使用国内镜像。先安装ModelScopepip install modelscope然后用ModelScope下载from modelscope import snapshot_download model_dir snapshot_download(deepseek-ai/Janus-Pro-7B) print(f模型下载到: {model_dir})把上面代码保存为download_model.py然后运行python download_model.py下载过程可能需要一些时间取决于你的网速。模型文件包括主要的模型权重文件.bin或.safetensors配置文件config.json分词器文件tokenizer.json等5. 测试模型是否正常工作模型下载完成后我们来写个简单的测试脚本看看模型能不能跑起来。5.1 测试图片理解功能创建一个文件test_understanding.pyimport torch from transformers import AutoModelForCausalLM from janus.models import MultiModalityCausalLM, VLChatProcessor from janus.utils.io import load_pil_images from PIL import Image import requests from io import BytesIO # 设置模型路径根据你实际下载的位置调整 model_path /home/你的用户名/.cache/huggingface/hub/models--deepseek-ai--Janus-Pro-7B # 加载处理器和模型 print(正在加载模型这可能需要几分钟...) vl_chat_processor VLChatProcessor.from_pretrained(model_path) tokenizer vl_chat_processor.tokenizer vl_gpt AutoModelForCausalLM.from_pretrained( model_path, trust_remote_codeTrue # Janus需要这个参数 ) # 移动到GPU并设置为评估模式 vl_gpt vl_gpt.to(torch.bfloat16).cuda().eval() print(模型加载完成) # 测试1从网络下载一张图片并理解 print(\n测试1理解网络图片) try: # 下载一张示例图片这里用一只猫的图片 url https://images.unsplash.com/photo-1514888286974-6d03bde4ba4f response requests.get(url) image Image.open(BytesIO(response.content)) # 保存到本地以便测试 image.save(test_cat.jpg) conversation [ { role: |User|, content: image_placeholder\n请描述这张图片里有什么, images: [test_cat.jpg], }, {role: |Assistant|, content: }, ] # 加载图片并准备输入 pil_images load_pil_images(conversation) prepare_inputs vl_chat_processor( conversationsconversation, imagespil_images, force_batchifyTrue ).to(vl_gpt.device) # 获取图片嵌入 inputs_embeds vl_gpt.prepare_inputs_embeds(**prepare_inputs) # 生成回答 outputs vl_gpt.language_model.generate( inputs_embedsinputs_embeds, attention_maskprepare_inputs.attention_mask, pad_token_idtokenizer.eos_token_id, bos_token_idtokenizer.bos_token_id, eos_token_idtokenizer.eos_token_id, max_new_tokens200, # 限制生成长度 do_sampleFalse, use_cacheTrue, ) answer tokenizer.decode(outputs[0].cpu().tolist(), skip_special_tokensTrue) print(f模型回答: {answer}) except Exception as e: print(f测试1出错: {e}) # 测试2使用本地图片 print(\n测试2理解本地图片) try: # 如果你有本地图片可以在这里测试 # 比如image_path 你的图片路径.jpg # 这里我们创建一个简单的测试 from PIL import Image, ImageDraw # 创建一个简单的测试图片 test_img Image.new(RGB, (384, 384), colorlightblue) draw ImageDraw.Draw(test_img) draw.rectangle([100, 100, 284, 284], fillred, outlineyellow) draw.text((150, 150), TEST, fillwhite) test_img.save(test_local.jpg) conversation [ { role: |User|, content: image_placeholder\n这张图片上有什么文字和图形, images: [test_local.jpg], }, {role: |Assistant|, content: }, ] pil_images load_pil_images(conversation) prepare_inputs vl_chat_processor( conversationsconversation, imagespil_images, force_batchifyTrue ).to(vl_gpt.device) inputs_embeds vl_gpt.prepare_inputs_embeds(**prepare_inputs) outputs vl_gpt.language_model.generate( inputs_embedsinputs_embeds, attention_maskprepare_inputs.attention_mask, pad_token_idtokenizer.eos_token_id, bos_token_idtokenizer.bos_token_id, eos_token_idtokenizer.eos_token_id, max_new_tokens150, do_sampleFalse, use_cacheTrue, ) answer tokenizer.decode(outputs[0].cpu().tolist(), skip_special_tokensTrue) print(f模型回答: {answer}) except Exception as e: print(f测试2出错: {e}) print(\n测试完成)运行这个测试python test_understanding.py如果一切正常你会看到模型对图片的描述。第一次运行可能会慢一些因为需要加载模型。5.2 测试图片生成功能创建一个文件test_generation.pyimport os import torch import numpy as np from PIL import Image from transformers import AutoModelForCausalLM from janus.models import MultiModalityCausalLM, VLChatProcessor # 设置模型路径 model_path /home/你的用户名/.cache/huggingface/hub/models--deepseek-ai--Janus-Pro-7B print(正在加载模型...) vl_chat_processor VLChatProcessor.from_pretrained(model_path) tokenizer vl_chat_processor.tokenizer vl_gpt AutoModelForCausalLM.from_pretrained( model_path, trust_remote_codeTrue ) vl_gpt vl_gpt.to(torch.bfloat16).cuda().eval() print(模型加载完成) # 简单的图片生成函数简化版只生成1张 torch.inference_mode() def generate_simple_image(prompt_text, output_dirgenerated_images): 生成单张图片的简化函数 conversation [ { role: |User|, content: prompt_text, }, {role: |Assistant|, content: }, ] # 应用对话模板 sft_format vl_chat_processor.apply_sft_template_for_multi_turn_prompts( conversationsconversation, sft_formatvl_chat_processor.sft_format, system_prompt, ) prompt sft_format vl_chat_processor.image_start_tag # 简化生成参数 temperature 1.0 parallel_size 1 # 只生成1张 cfg_weight 5.0 image_token_num_per_image 576 img_size 384 patch_size 16 # 准备输入 input_ids vl_chat_processor.tokenizer.encode(prompt) input_ids torch.LongTensor(input_ids) # 创建tokens条件和非条件各1个 tokens torch.zeros((2, len(input_ids)), dtypetorch.int).cuda() tokens[0, :] input_ids tokens[1, 1:-1] vl_chat_processor.pad_id # 非条件版本 inputs_embeds vl_gpt.language_model.get_input_embeddings()(tokens) # 生成图片tokens generated_tokens torch.zeros((1, image_token_num_per_image), dtypetorch.int).cuda() print(正在生成图片这可能需要30-60秒...) for i in range(image_token_num_per_image): outputs vl_gpt.language_model.model( inputs_embedsinputs_embeds, use_cacheTrue, past_key_valuesoutputs.past_key_values if i ! 0 else None ) hidden_states outputs.last_hidden_state logits vl_gpt.gen_head(hidden_states[:, -1, :]) # 分类器自由引导 logit_cond logits[0:1, :] # 条件 logit_uncond logits[1:2, :] # 非条件 logits logit_uncond cfg_weight * (logit_cond - logit_uncond) # 采样下一个token probs torch.softmax(logits / temperature, dim-1) next_token torch.multinomial(probs, num_samples1) generated_tokens[:, i] next_token.squeeze(dim-1) # 准备下一轮输入 next_token torch.cat([next_token, next_token], dim0) img_embeds vl_gpt.prepare_gen_img_embeds(next_token) inputs_embeds img_embeds.unsqueeze(dim1) # 解码图片 dec vl_gpt.gen_vision_model.decode_code( generated_tokens.to(dtypetorch.int), shape[1, 8, img_size // patch_size, img_size // patch_size] ) # 转换为图片格式 dec dec.to(torch.float32).cpu().numpy().transpose(0, 2, 3, 1) dec np.clip((dec 1) / 2 * 255, 0, 255).astype(np.uint8) # 保存图片 os.makedirs(output_dir, exist_okTrue) save_path os.path.join(output_dir, fgenerated_{prompt_text[:20]}.jpg) img Image.fromarray(dec[0]) img.save(save_path) print(f图片已保存到: {save_path}) return save_path # 测试生成 if __name__ __main__: # 测试几个简单的提示词 test_prompts [ 一只可爱的小猫在玩毛线球, 夕阳下的海滩有椰子树和帆船, 一个红色的苹果放在木桌上, ] for i, prompt in enumerate(test_prompts): print(f\n生成图片 {i1}/{len(test_prompts)}: {prompt}) try: image_path generate_simple_image(prompt) print(f成功生成: {image_path}) except Exception as e: print(f生成失败: {e}) print(\n所有测试完成生成的图片在 generated_images 文件夹中)运行生成测试python test_generation.py注意图片生成比图片理解需要更多时间通常一张384x384的图片需要30-60秒。6. 使用Gradio创建Web界面如果你想要一个更友好的界面来使用Janus-Pro-7B可以安装Gradio来创建一个Web界面。6.1 安装Gradiopip install gradio pip install -e .[gradio] # 安装Janus的Gradio扩展6.2 运行官方DemoJanus项目自带了一个Gradio演示界面cd Janus # 进入Janus目录 python demo/app_januspro.py运行后你会看到类似这样的输出Running on local URL: http://127.0.0.1:7860在浏览器中打开这个地址就能看到一个Web界面你可以上传图片让模型描述输入文字让模型生成图片进行多轮对话6.3 创建自定义界面如果你想要更简单的界面可以创建一个自己的my_app.pyimport gradio as gr import torch from transformers import AutoModelForCausalLM from janus.models import MultiModalityCausalLM, VLChatProcessor from janus.utils.io import load_pil_images import tempfile import os # 全局变量存储模型 model_loaded False vl_gpt None vl_chat_processor None tokenizer None def load_model_once(): 只加载一次模型 global model_loaded, vl_gpt, vl_chat_processor, tokenizer if not model_loaded: print(正在加载模型第一次使用需要一些时间...) model_path /home/你的用户名/.cache/huggingface/hub/models--deepseek-ai--Janus-Pro-7B vl_chat_processor VLChatProcessor.from_pretrained(model_path) tokenizer vl_chat_processor.tokenizer vl_gpt AutoModelForCausalLM.from_pretrained( model_path, trust_remote_codeTrue ) vl_gpt vl_gpt.to(torch.bfloat16).cuda().eval() model_loaded True print(模型加载完成) return 模型已就绪 def understand_image(image, question): 理解图片 if not model_loaded: return 请先加载模型 try: # 保存上传的图片 temp_path tempfile.mktemp(suffix.jpg) image.save(temp_path) conversation [ { role: |User|, content: fimage_placeholder\n{question}, images: [temp_path], }, {role: |Assistant|, content: }, ] pil_images load_pil_images(conversation) prepare_inputs vl_chat_processor( conversationsconversation, imagespil_images, force_batchifyTrue ).to(vl_gpt.device) inputs_embeds vl_gpt.prepare_inputs_embeds(**prepare_inputs) outputs vl_gpt.language_model.generate( inputs_embedsinputs_embeds, attention_maskprepare_inputs.attention_mask, pad_token_idtokenizer.eos_token_id, bos_token_idtokenizer.bos_token_id, eos_token_idtokenizer.eos_token_id, max_new_tokens300, do_sampleFalse, use_cacheTrue, ) answer tokenizer.decode(outputs[0].cpu().tolist(), skip_special_tokensTrue) # 清理临时文件 os.remove(temp_path) return answer except Exception as e: return f出错: {str(e)} # 创建Gradio界面 with gr.Blocks(titleJanus-Pro-7B 演示) as demo: gr.Markdown(# Janus-Pro-7B 多模态模型演示) gr.Markdown(这是一个既能理解图片又能生成图片的AI模型) # 模型加载部分 with gr.Row(): load_btn gr.Button(加载模型, variantprimary) status gr.Textbox(label状态, value点击按钮加载模型) load_btn.click(load_model_once, outputsstatus) # 图片理解部分 with gr.Tab(图片理解): gr.Markdown(### 上传图片让AI描述内容) with gr.Row(): image_input gr.Image(label上传图片, typepil) question_input gr.Textbox( label问题, value请描述这张图片, placeholder你可以问关于图片的任何问题... ) understand_btn gr.Button(分析图片, variantsecondary) answer_output gr.Textbox(labelAI回答, lines5) understand_btn.click( understand_image, inputs[image_input, question_input], outputsanswer_output ) # 图片生成部分简化版 with gr.Tab(图片生成): gr.Markdown(### 输入描述让AI生成图片) gr.Markdown(注意生成功能需要更多时间这里只展示理解功能) gr.Markdown(完整生成功能请运行官方demo: python demo/app_januspro.py) prompt_input gr.Textbox( label图片描述, value一只可爱的小猫, placeholder描述你想要生成的图片... ) gr.Markdown(示例提示词) gr.Markdown(- 夕阳下的海滩有椰子树) gr.Markdown(- 一个宇航员在月球上骑自行车) gr.Markdown(- 中式园林里的红色亭子) if __name__ __main__: demo.launch(server_name0.0.0.0, server_port7860)运行你的自定义应用python my_app.py7. 常见问题解决在安装和使用过程中你可能会遇到一些问题。这里整理了一些常见问题和解决方法7.1 内存不足错误问题运行时报错“CUDA out of memory”解决减少批量大小在代码中找batch_size相关参数改小一些使用更小的模型Janus-Pro也有1B版本需要内存更少清理GPU内存重启Python进程或使用torch.cuda.empty_cache()7.2 依赖版本冲突问题安装时提示某个包版本不兼容解决# 创建新的干净虚拟环境 python3.9 -m venv janus_env_fresh source janus_env_fresh/bin/activate # 严格按照顺序安装 pip install torch2.2.2 torchvision0.17.2 torchaudio2.2.2 pip install numpy1.26.3 pip install transformers4.40.0 pip install -e .7.3 模型下载失败问题从Hugging Face下载太慢或失败解决使用国内镜像修改~/.bashrc添加代理export HF_ENDPOINThttps://hf-mirror.com手动下载在能访问的机器下载后用U盘或网盘传输使用ModelScope如前面所述国内速度较快7.4 运行速度慢问题模型响应很慢解决确保使用GPU检查torch.cuda.is_available()是否为True使用半精度代码中已经有.to(torch.bfloat16)首次运行慢是正常的模型需要加载到内存7.5 图片生成质量不高问题生成的图片模糊或不准确解决调整提示词更详细、具体的描述效果更好调整参数尝试不同的temperature和cfg_weight多次生成同一个提示词多生成几次选最好的8. 进阶使用建议如果你成功安装了Janus-Pro-7B并想进一步探索这里有一些建议8.1 尝试不同的应用场景教育辅助上传教科书图片让模型解释内容内容创作生成文章配图或社交媒体图片设计助手生成设计灵感或草图无障碍工具为视障人士描述图片内容8.2 优化使用体验缓存模型第一次加载后模型会留在GPU内存中后续调用更快批量处理如果需要处理多张图片尽量批量进行异步处理对于生成任务可以使用异步避免界面卡顿8.3 探索相关技术如果你对Janus-Pro-7B感兴趣还可以了解Janus-Pro-1B更小的版本适合资源有限的设备JanusFlow同一系列的另一个模型使用不同的生成技术其他多模态模型如LLaVA、Qwen-VL等9. 总结整个安装过程走下来你应该已经在Ubuntu 20.04上成功运行Janus-Pro-7B了。从环境准备到模型测试每一步我都尽量详细说明特别是可能遇到的坑和解决方法。这个模型最吸引人的地方就是它的“多才多艺”既能看懂图片又能生成图片而且完全开源免费。实际用下来图片理解功能反应挺快的准确度也不错。图片生成需要一些耐心等待时间稍长但效果对日常使用来说足够了。如果你有编程基础还可以基于它开发自己的应用比如做个自动配图工具或者智能相册管理系统。安装过程中最关键的几点是确保CUDA配置正确、使用合适的Python版本、耐心下载模型文件。遇到问题不用急按照错误信息一步步排查大部分问题都能解决。现在你可以开始探索Janus-Pro-7B的各种可能性了。从简单的图片描述开始慢慢尝试更复杂的应用。AI技术的发展真的很快像这样强大的模型能直接在个人电脑上运行几年前还很难想象。希望这个教程能帮你顺利入门享受多模态AI带来的便利和乐趣。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。