Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

面试0528

自我介绍

题外话

  • 研一老师允许放实习吗
  • 目前发表的文章是什么方向的
  • 学制 是哪一届毕业的
  • 能实习多久

技术面试

1、做的多模态相关的,是图片向量化检索的吗?图片向量化之后是怎么跟文本对应起来的?又是怎么跟对应的 prompt 对应起来的?

  • 框架:图文分离检索 + 页面级聚合 + 多工作流的 agent
  • BM25
  • 作为数据库中的两条索引存在于页面中的单条记录(chromadb:页面信息、文本块、图片向量、metadata)
  • 偏好差异可以互相补充信息,都做 embedding 容易使语义偏移。
  • 可以往 embedding 的原理上引,实体词特殊,token 少,不容易学到稳定语义。
  • RRF,通过两路各自的召回分布来定融合权重。
  • 区分召回和推理两个阶段的 prompt。
1
2
3
4
5
6
7
召回
-> routing
-> 两路判断(是否缺少上下文、是否需要扩写、是否需要补充提问、是否需要视觉检索)
-> 不同的 prompt 去进行不同的检索
-> 检索的一系列步骤
-> 把输出对应的页面(根据得分分布 -> 页面数量)和 prompt 拼在一起
-> vlm 输出答案

2、问答的时候输入输出都是文本吗还是也是有图片?图片在向量化的过程中起到什么作用的?

1
2
召回:输入 -> 文本,输出 -> 文本 + 视觉页面
推理:输入 -> 文本 + 视觉页面,输出 -> 文本

3、多模态的模型在对图片的处理的目的是什么,是先处理成文本,然后再去用 BM25 作跟 prompt 之间的对比吗?

  • 两路召回,互相补充信息,同时根据得分分布确定融合权重
  • embedding 对比:prompt 向量 和 数据库中的视觉 embeddding 块

4、那你输入问题是文本的,那什么时候决定会开启 clip,什么时候决定回去进行图片的检索

大模型判断 + 文本检索后的得分分布兜底。

5、那是否能举个例子,就是会用到多模态链路检索的情况

雷达限速告警(安装方式一、二),

  • prompt:按照安装方式一的前后雷达告警范围是多少。
  • 区别在视觉块,文本检索基本一致。

6、图片 embedding 模型用的什么

  • CLIP ViT-B/32
  • CLIP-ViT-L/14
  • CLIP-ViT-S/16

7、介绍一下你的论文,就是你的边缘化部署的场景、模型、优化,然后使用的是多大的模型、怎么部署的?

8、奖励函数、优化目标

9、vllm 和 ollama.cpp 的部署区别

vllm

作为高并发的推理框架,适合高性能 gpu 服务器部署

部署流程
1
2
3
4
HF 模型目录 / HuggingFace 模型名
-> vLLM 直接加载
-> 启动 OpenAI-compatible API
-> 业务系统通过 HTTP 调用

同样 vllm 也支持很多量化格式:

1
2
3
4
5
FP16 / BF16 原模型
AWQ
GPTQ
bitsandbytes
FP8
补充
  • GPTQ 一种推理量化方案,通过分析哪个权重重要,最小化量化误差
  • AWQ(考虑激活分布的权重量化):通过分析保留一小段重要权重精度

ollama.cpp

更适合轻量化、本地化、边缘设备推理,重点是低资源和量化部署

部署流程

huggingface 格式模型转化 GGUF 格式,包含模型权重、tokenizer、模型结构 metadata 等信息,通过 llama.cpp 量化工具把 FP16/BF16 这类高精度 GGUF 转成 Q4/Q5 等低比特版本

  1. 假设你有一个 HuggingFace 格式模型
1
2
3
4
Qwen2.5-Coder-1.5B-Instruct/
config.json
tokenizer.json
model.safetensors
  1. 步骤
1
2
3
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
pip install -r requirements.txt
  1. 转换
1
2
3
python convert_hf_to_gguf.py /path/to/Qwen2.5-Coder-1.5B-Instruct \
--outfile qwen2.5-coder-1.5b-f16.gguf \
--outtype f16
  1. Q4/Q5 量化

进一步量化 f16 GGUF

  • Q4_K_M:体积更小,速度更快,效果损失略大
  • Q5_K_M:体积稍大,效果更稳,通常是质量和资源的折中
  • Q8_0:更接近原模型,但占用更大
  1. 本地启动服务
1
./llama-server -m qwen2.5-coder-1.5b-Q4_K_M.gguf --port 8000

10、vllm 这块,高吞吐量的核心优化是怎么做的

vllm 高吞吐,本质解决的问题:

KV Cache 显存浪费

传统的 KV Cache 通常要为每个请求预留连续显存空间,造成浪费。

  • 解决方案:PagedAttention.它不要求一个请求的 KV Cache 存在一整块连续显存里,而是把 KV Cache 切成很多小 block.一,按需分配

请求生成到多少 token,就分配多少 cache block。

不用提前为最大长度预留。

第二,减少碎片

因为显存以 block 为单位管理,可以复用空闲 block。

短请求结束后释放的 block,可以马上给新请求用。

第三,支持更多并发

KV Cache 浪费减少后,同样显存能放下更多请求。

batch size 变大,GPU 利用率就上去了。

多请求生成长度不一致导致 GPU 空转

不同问题的生成 token 数量不一,GPU 受限生成最长问题,利用率低

  • 解决方案:动态 batching。在每个 decode step 动态调度请求,已完成的请求退出,新请求补进 batch,避免静态 batching 中短请求等待长请求的问题。两者结合后,GPU 利用率更高,所以整体吞吐更高。

11、qwen-vl 用了哪些系列,2、3 系列的使用下来的区别是什么

qwen 系列不论是 llm 和 vlm 从 2 ~ 3 都是从 QA 问答向 agentic 的方向提升。从回答问题到偏好给出规划、结构化动作这种的 workflow 化的输出内容。


评论