淘宝客做网站推广赚钱吗新手建网站什么类型好
- 作者: 五速梦信息网
- 时间: 2026年03月21日 08:21
当前位置: 首页 > news >正文
淘宝客做网站推广赚钱吗,新手建网站什么类型好,报告基因,国展网站建设友情链接
该文档参考InternVL垂直领域场景微调实践而写成#xff0c;感谢社区同学法律人的文档。
写在前面#xff08;什么是InternVL#xff09;
InternVL 是一种用于多模态任务的深度学习模型#xff0c;旨在处理和理解多种类型的数据输入#xff0c;如图像和文本。它…
友情链接
该文档参考InternVL垂直领域场景微调实践而写成感谢社区同学法律人的文档。
写在前面什么是InternVL
InternVL 是一种用于多模态任务的深度学习模型旨在处理和理解多种类型的数据输入如图像和文本。它结合了视觉和语言模型能够执行复杂的跨模态任务比如图文匹配、图像描述生成等。通过整合视觉特征和语言信息InternVL 可以在多模态领域取得更好的表现
InternVL 模型总览 对于InternVL这个模型来说它vision模块就是一个微调过的ViTllm模块是一个InternLM的模型。对于视觉模块来说它的特殊之处在Dynamic High Resolution。
Dynamic High Resolution
InternVL独特的预处理模块动态高分辨率是为了让ViT模型能够尽可能获取到更细节的图像信息提高视觉特征的表达能力。对于输入的图片首先resize成448的倍数然后按照预定义的尺寸比例从图片上crop对应的区域。细节如图所示。 Pixel Shuffle
Pixel Shuffle在超分任务中是一个常见的操作PyTorch中有官方实现即nn.PixelShuffle(upscale_factor) 该类的作用就是将一个tensor中的元素值进行重排列假设tensor维度为[B, C, H, W], PixelShuffle操作不仅可以改变tensor的通道数也会改变特征图的大小。
InternVL 部署微调实践 我们选定的任务是让InternVL-2B生成文生图提示词这个任务需要VLM对图片有格式化的描述并输出。 让我们来一起完成一个用VLM模型进行冷笑话生成让你的模型说出很逗的冷笑话吧。在这里我们微调InterenVL使用xtuner。部署InternVL使用lmdeploy。
准备InternVL模型
我们使用InternVL2-2B模型。该模型已在share文件夹下挂载好现在让我们把移动出来。
cd /root
mkdir -p model# cp 模型cp -r /root/share/new_models/OpenGVLab/InternVL2-2B /root/model/准备环境
这里我们来手动配置下xtuner。
配置虚拟环境
conda create –name xtuner python3.10 -y# 激活虚拟环境注意后续的所有操作都需要在这个虚拟环境中进行
conda activate xtuner# 安装一些必要的库
conda install pytorch2.1.2 torchvision0.16.2 torchaudio2.1.2 pytorch-cuda12.1 -c pytorch -c nvidia -y
安装其他依赖
apt install libaio-dev pip install transformers4.39.3 pip install streamlit1.36.0 安装xtuner
创建一个目录用来存放源代码
mkdir -p /root/InternLM/codecd /root/InternLM/codegit clone -b v0.1.23 https://github.com/InternLM/XTuner进入XTuner目录 cd /root/InternLM/code/XTuner pip install -e .[deepspeed]安装LMDeploy pip install lmdeploy0.5.3安装验证 xtuner version##命令xtuner help确认一下你的版本号和我们一致哦 准备微调数据集 我们这里使用huggingface上的zhongshsh/CLoT-Oogiri-GO据集特别鸣谢。 misc{zhong2023clot,title{Lets Think Outside the Box: Exploring Leap-of-Thought in Large Language Models with Creative Humor Generation},author{Zhong, Shanshan and Huang, Zhongzhan and Gao, Shanghua and Wen, Weushao and Lin, Liang and Zitnik, Marinka and Zhou, Pan},journal{arXiv preprint arXiv:2312.02439},year{2023} }数据集我们从官网下载下来并进行去重只保留中文数据等操作。并制作成XTuner需要的形式。并已在share里我们一起从share里挪出数据集。
首先让我们安装一下需要的包
pip install datasets matplotlib Pillow timm## 让我们把数据集挪出来
cp -r /root/share/new_models/datasets/CLoT_cn_2000 /root/InternLM/datasets/让我们打开数据集的一张图看看我们选择jsonl里的第一条数据对应的图片。首先我们先把这张图片挪动到InternLM文件夹下面。
cp InternLM/datasets/CLoT_cn_2000/ex_images/007aPnLRgy1hb39z0im50j30ci0el0wm.jpg InternLM/哈哈是两只猫在掐架。那我给到的冷笑话回复是什么呢
InternVL 推理部署攻略
我们用LMDeploy来推理这张图片看看它能不能成功解释出梗图呢
使用pipeline进行推理
之后我们使用lmdeploy自带的pipeline工具进行开箱即用的推理流程首先我们新建一个文件。
touch /root/InternLM/code/test_lmdeploy.py
cd /root/InternLM/code/然后把以下代码拷贝进test_lmdeploy.py中。
from lmdeploy import pipeline
from lmdeploy.vl import load_imagepipe pipeline(/root/model/InternVL2-2B)image load_image(/root/InternLM/007aPnLRgy1hb39z0im50j30ci0el0wm.jpg)
response pipe((请你根据这张图片讲一个脑洞大开的梗, image))
print(response.text)运行执行推理结果。
python3 test_lmdeploy.py推理后 推理出来有什么文字是纯随机的并不一定和展示结果完全一致哦 推理后我们发现直接使用2b模型不能很好的讲出梗现在我们要对这个2b模型进行微调。 InternVL 微调攻略
准备数据集
数据集格式为
为了高效训练请确保数据格式为
{id: 000000033471,image: [coco/train2017/000000033471.jpg], # 如果是纯文本则该字段为 None 或者不存在conversations: [{from: human,value: image\nWhat are the colors of the bus in the image?},{from: gpt,value: The bus in the image is white and red.}]}这里我们也为大家准备好了可以直接进行微调的数据集。数据集就是咱们刚才复制进InternLM/datasets的数据。 配置微调参数 让我们一起修改XTuner下 InternVL的config文件在 /root/InternLM/code/XTuner/xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_qlora_finetune.py 需要修改的部分 最基础修改一下模型地址和数据地址即可。 总体config文件(复制即可)
Copyright © OpenMMLab. All rights reserved.
from mmengine.hooks import (CheckpointHook, DistSamplerSeedHook, IterTimerHook,LoggerHook, ParamSchedulerHook) from mmengine.optim import AmpOptimWrapper, CosineAnnealingLR, LinearLR from peft import LoraConfig from torch.optim import AdamW from transformers import AutoTokenizerfrom xtuner.dataset import InternVL_V1_5_Dataset from xtuner.dataset.collate_fns import default_collate_fn from xtuner.dataset.samplers import LengthGroupedSampler from xtuner.engine.hooks import DatasetInfoHook from xtuner.engine.runner import TrainLoop from xtuner.model import InternVL_V1_5 from xtuner.utils import PROMPT_TEMPLATE#######################################################################
PART 1 Settings
#######################################################################
Model
path /root/model/InternVL2-2B# Data data_root /root/InternLM/datasets/CLoT_cn_2000/ data_path data_root ex_cn.json image_folder data_root prompt_template PROMPT_TEMPLATE.internlm2_chat max_length 6656# Scheduler Optimizer batch_size 4 # per_device accumulative_counts 4 dataloader_num_workers 4 max_epochs 6 optim_type AdamW
official 1024 - 4e-5
lr 2e-5 betas (0.9, 0.999) weight_decay 0.05 max_norm 1 # grad clip warmup_ratio 0.03# Save save_steps 1000 save_total_limit 1 # Maximum checkpoints to keep (-1 means unlimited)#######################################################################
PART 2 Model Tokenizer Image Processor
####################################################################### model dict(typeInternVL_V1_5,model_pathpath,freeze_llmTrue,freeze_visual_encoderTrue,quantization_llmTrue, # or Falsequantization_vitFalse, # or True and uncomment visual_encoder_lora# comment the following lines if you dont want to use Lora in llmllm_loradict(typeLoraConfig,r128,lora_alpha256,lora_dropout0.05,target_modulesNone,task_typeCAUSAL_LM),# uncomment the following lines if you dont want to use Lora in visual encoder # noqa# visual_encoder_loradict(# typeLoraConfig, r64, lora_alpha16, lora_dropout0.05,# target_modules[attn.qkv, attn.proj, mlp.fc1, mlp.fc2]) )#######################################################################
PART 3 Dataset Dataloader
####################################################################### llava_dataset dict(typeInternVL_V1_5_Dataset,model_pathpath,data_pathsdata_path,image_foldersimage_folder,templateprompt_template,max_lengthmax_length)train_dataloader dict(batch_sizebatch_size,num_workersdataloader_num_workers,datasetllava_dataset,samplerdict(typeLengthGroupedSampler,length_propertymodality_length,per_device_batch_sizebatch_size * accumulative_counts),collate_fndict(typedefault_collate_fn))#######################################################################
PART 4 Scheduler Optimizer
#######################################################################
optimizer
optim_wrapper dict(typeAmpOptimWrapper,optimizerdict(typeoptim_type, lrlr, betasbetas, weight_decayweight_decay),clip_graddict(max_normmax_norm, error_if_nonfiniteFalse),accumulative_countsaccumulative_counts,loss_scaledynamic,dtypefloat16)# learning policy
More information: https://github.com/open-mmlab/mmengine/blob/main/docs/en/tutorials/param_scheduler.md # noqa: E501
param_scheduler [dict(typeLinearLR,start_factor1e-5,by_epochTrue,begin0,endwarmup_ratio * max_epochs,convert_to_iter_basedTrue),dict(typeCosineAnnealingLR,eta_min0.0,by_epochTrue,beginwarmup_ratio * max_epochs,endmax_epochs,convert_to_iter_basedTrue) ]# train, val, test setting train_cfg dict(typeTrainLoop, max_epochsmax_epochs)#######################################################################
PART 5 Runtime
#######################################################################
Log the dialogue periodically during the training process, optional
tokenizer dict(typeAutoTokenizer.from_pretrained,pretrained_model_name_or_pathpath,trust_remote_codeTrue)custom_hooks [dict(typeDatasetInfoHook, tokenizertokenizer), ]# configure default hooks default_hooks dict(# record the time of every iteration.timerdict(typeIterTimerHook),# print log every 10 iterations.loggerdict(typeLoggerHook, log_metric_by_epochFalse, interval10),# enable the parameter scheduler.param_schedulerdict(typeParamSchedulerHook),# save checkpoint per save_steps.checkpointdict(typeCheckpointHook,save_optimizerFalse,by_epochFalse,intervalsave_steps,max_keep_ckptssave_total_limit),# set sampler seed in distributed evrionment.sampler_seeddict(typeDistSamplerSeedHook), )# configure environment env_cfg dict(# whether to enable cudnn benchmarkcudnn_benchmarkFalse,# set multi process parametersmp_cfgdict(mp_start_methodfork, opencv_num_threads0),# set distributed parametersdist_cfgdict(backendnccl), )# set visualizer visualizer None# set log level log_level INFO# load from which checkpoint load_from None# whether to resume training from the loaded checkpoint resume False# Defaults to use random seed and disable deterministic randomness dict(seedNone, deterministicFalse)# set log processor log_processor dict(by_epochFalse)开始训练 这里使用之前搞好的configs进行训练。咱们要调整一下batch size并且使用qlora。要不半卡不够用的 QAQ。 cd XTunerNPROC_PER_NODE1 xtuner train /root/InternLM/code/XTuner/xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_qlora_finetune.py –work-dir /root/InternLM/work_dir/internvl_ft_run_8_filter –deepspeed deepspeed_zero1合并权重模型转换 用官方脚本进行权重合并 如果这里你执行的epoch不是6是小一些的数字。你可能会发现internvl_ft_run_8_filter下没有iter_3000.pth, 那你需要把iter_3000.pth切换成你internvl_ft_run_8_filter目录下的pth即可。 cd XTuner
transfer weights
python3 xtuner/configs/internvl/v1_5/convert_to_official.py xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_qlora_finetune.py /root/InternLM/work_dir/internvl_ft_run_8_filter/iter_3000.pth /root/InternLM/InternVL2-2B/最后我们的模型在/root/InternLM/InternVL2-2B/文件格式 . |– added_tokens.json |– config.json |– configuration_intern_vit.py |– configuration_internlm2.py |– configuration_internvl_chat.py |– conversation.py |– generation_config.json |– model.safetensors |– modeling_intern_vit.py |– modeling_internlm2.py |– modeling_internvl_chat.py |– special_tokens_map.json |– tokenization_internlm2.py |– tokenizer.model – tokenizer_config.json微调后效果对比 现在我们微调好啦让我们再来试试这张图片吧 我们把下面的代码替换进test_lmdeploy.py中然后跑一下效果。 from lmdeploy import pipeline from lmdeploy.vl import load_imagepipe pipeline(/root/InternLM/InternVL2-2B)image load_image(/root/InternLM/007aPnLRgy1hb39z0im50j30ci0el0wm.jpg) response pipe((请你根据这张图片讲一个脑洞大开的梗, image)) print(response.text)cd /root/InternLM/codepython3 test_lmdeploy.py效果还不错吧哈哈哈。 附上一些其他有意思的例子全都不是训练集里的
- 上一篇: 淘宝客怎么自建网站做推广阿里万网站建设
- 下一篇: 淘宝客做网站怎样推广商品网站建设实验报告
相关文章
-
淘宝客怎么自建网站做推广阿里万网站建设
淘宝客怎么自建网站做推广阿里万网站建设
- 技术栈
- 2026年03月21日
-
淘宝客网站怎么做推广计划石家庄兼职建站
淘宝客网站怎么做推广计划石家庄兼职建站
- 技术栈
- 2026年03月21日
-
淘宝客网站源码html做生意网站
淘宝客网站源码html做生意网站
- 技术栈
- 2026年03月21日
-
淘宝客做网站怎样推广商品网站建设实验报告
淘宝客做网站怎样推广商品网站建设实验报告
- 技术栈
- 2026年03月21日
-
淘宝了做网站卖什么好做一百度网站吗
淘宝了做网站卖什么好做一百度网站吗
- 技术栈
- 2026年03月21日
-
淘宝联盟+做网站营销托管全网营销推广
淘宝联盟+做网站营销托管全网营销推广
- 技术栈
- 2026年03月21日
