James Tsang

James Tsang

A developer.
github
twitter
tg_channel

ARTS 打卡第 7 天

A:290. 单词规律#

给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。
示例 1:
输入: pattern = "abba", s = "dog cat cat dog"
输出: true
示例 2:
输入 = "abba", s = "dog cat cat fish"
输出: false
示例 3:
输入: pattern = "aaaa", s = "dog cat cat dog"
输出: false

function wordPattern(pattern: string, s: string): boolean {
  const arr = s.split(' ')
  if (pattern.length !== arr.length) {
    return false
  }
  const map = new Map()
  const patternAppearArr = Array.from(new Set(pattern.split('')))
  let resultPattern = ''
  let index = -1
  for (let i = 0; i < arr.length; i += 1) {
    const char = arr[i]
    if (map.has(char)) {
      resultPattern += map.get(char)
    } else {
      index += 1
      map.set(char, patternAppearArr[index])
      resultPattern += map.get(char)
    }
  }
  return resultPattern === pattern
}

提交结果为:

41/41 cases passed (68 ms)
Your runtime beats 44.12 % of typescript submissions
Your memory usage beats 73.53 % of typescript submissions (42.1 MB)

将模式里出现的字母表示记录下来去重,之后将字符串一个个匹配到字母表示上,同时将匹配结果存在一个 map 里。已经出现过的就采用记录的值,没出现过的就把表示往前再推一个,同时记录到 map 中。最后得到表示当前字符串的模式,如果相同则匹配。

R:How to Match LLM Patterns to Problems#

作者之前写了一篇文章探讨构建 LLM 系统和应用的模式,之后收到了一些问题问怎么将具体的问题和模式对应起来,这篇文章是进一步探讨人们在应用这些模式时可能出现的问题。

外部还是内部模型,数据强相关还是弱相关#

外部模型是我们无法完全掌控的模型,我们无法 fine-tune 它们,会受到它的调用速度和上下文长度限制,还可能担心向它们发送了机密或专有数据。尽管如此,外部模型的表现当前处于领先水平。

内部模型是我们自己开发和部署的,这没有外部模型的限制,一般是通过开源模型训练得到,这些模型的水平也往往落后于第三方商业公司的商业模型几个月甚至几年。

为了确定应用 LLM 的模式,我们需要搞清楚数据在应用场景里扮演的角色:数据是主要组件还是副产物?或者数据是一个无关紧要的因素。

比如:模型评估和 fine-tune 是和数据强相关的。缓存、“防御性的容错措施来保障用户体验”、确保输出质量的 “护栏模式” 更多是纥基础设施相关的。

RAG (Retrieval Augmented Generation) 和手机用户反馈则处于中间位置,RAG 需要进行填充 prompt 来进行 in-context learning 但也需要检索索引的服务。用户反馈数据回流进行 fine-tune 则需要设计用户界面以及进行数据分析和依赖数据管道。

将模式匹配到问题上#

下面我们来看针对一些问题要应用什么模式:

  • 缺少特定任务的性能测量:无论是外部还是内部模型,当我们改变 prompt、fine-tune 模型或者改善 RAG 流程后,我们需要一个办法来测量改善了多少以及进行回归。此外我们需要测量用户是喜欢还是不喜欢新的模型特性,我们的调整对用户的影响。对这些问题我们可以用 “评估” 以及 “收集用户反馈” 任务
  • 外部模型表现不佳:这可能是因为模型训练数据不够新、模型缺少专有数据或者是生成时缺少充分的上下文。对这些问题可以用到 RAG 和评估,评估是用来测量实现检索后的性能表现提升的。
  • 内部模型表现不佳:模型可能在抽取、总结等任务上生成非事实响应、离题、回答不够流畅等,这时候可以考虑 fine-tune 以及手机用户反馈进行 fine-tune
  • 受限于外部模型:可能是调用次数、token 长度等技术限制,也可能是不能发送机器数据或者 API 调用成本更好的限制。这种情况需要联系 LLM 供应商尝试本地部署,或者自己 fine-tune 以及手机用户反馈进行 fine-tune、评估
  • 延迟超过了用户体验的要求:某些使用场景可能需要模型在几百毫秒内返回,包括控制数据质量的时间。虽然流式输出可以优化用户体验,但它可能不适用于全部场景,比如非聊天机器人场景。这时候就需要用到缓存、护栏模式等
  • 客户体验保障:LLM 不一定能产出人们想要的准确输出,这时候就需要做一些用户体验方面的保障措施来进行容错处理,比如设定正确的期望,以及进行有效的忽略和纠正。此外我们如何承认错误发生并缓解它造成的影响,进入到容错流程。这就需要用到防御性用户体验和手机用户反馈来理解问题以及进行 fine-tune
  • 对用户造成的影响缺少可见性:有时我们上线了 LLM 应用,但实际效果可能变坏了,我们要知道究竟变好还是变坏了,就需要用到监控还有收集用户反馈。

T:pyannote-audio 语音标注#

一个语音标注模型,可以区分出音频里出现的不同人的对话并标注每个发言者说话的时间段。可以基于此进行音频切割,然后输入到 whisper 模型中进行语音转文本,实现对一段多人对话音频的文本转换。

S:快速阅读的一个技巧#

在阅读的时候,尽量避免视线回撤,这可以强迫我们的思路要与文章跟进和切换,这可能一开始不适应,但对于理解难度要求不高的内容,是能通过上下文理解前面没有完全吃透的内容的。


Reference:

  1. ARTS 打卡活动
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。