Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐞 反馈问题:2.7.1 版本 OpenAI 翻译卡顿 #541

Closed
5 of 6 tasks
wangbiye opened this issue May 7, 2024 · 10 comments
Closed
5 of 6 tasks

🐞 反馈问题:2.7.1 版本 OpenAI 翻译卡顿 #541

wangbiye opened this issue May 7, 2024 · 10 comments
Assignees
Labels
bug Something isn't working fixed in next release The issue will be closed once next release is available

Comments

@wangbiye
Copy link

wangbiye commented May 7, 2024

请先确认以下事项:

  • 请务必查看 常见问题
  • 已仔细阅读了 README
  • issues 页面搜索过问题(包括已关闭的 issue),但未能找到解决方法
  • Easydict 已升级到 最新版本
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

问题描述

13-inch, 2020, Four Thunderbolt 3 ports
2 GHz 四核Intel Core i5
macOS 14.4.1 (23E224)

使用 2.6.1 和 2.7.1 差别还是挺大的, 感觉 2.7.1 能让电脑都卡顿; 当我输入这些文字的时候, 开启的是 2.7.1 比较卡, 退出之后输入文字都流畅了; 两个版本效果看视频

2.6.1 效果
https://github.com/tisfeng/Easydict/assets/9958811/d275a41a-f0e6-4d3d-a062-79cc684fba9e

2.7.1 效果
https://github.com/tisfeng/Easydict/assets/9958811/06db5807-4806-4d06-8d92-7202fa9afd5d

该问题是否可以稳定重现?

可重现

重现步骤

在我电脑上只要安装 2.7.1 版本就是这种效果

截图

已提供视频

期望结果

达到 2.6.1 的流程效果

解决方案(可选)

No response

设备型号 && 系统版本

13-inch, 2020, Four Thunderbolt 3 ports, macOS 14.4.1 (23E224)

是否愿意提交 PR 解决该问题?

  • 我愿意提交 PR
@wangbiye wangbiye added the bug Something isn't working label May 7, 2024
@tisfeng
Copy link
Owner

tisfeng commented May 7, 2024

对于这种 stream 请求服务,目前 Easydict 界面刷新方式确实比较糟糕,会导致卡顿,但 2.7 版本相比 2.6,好像只是用 Swift 重写了 OpenAI 服务,界面相关的逻辑没有改,按理说接口请求方面应该不会有太大影响。

@Jerry23011 你测试确认一下这个问题。

@tianzhuwei
Copy link

tianzhuwei commented May 8, 2024

我也遇到了这个问题 2.7.1 明显卡顿

@Jerry23011
Copy link
Collaborator

@tianzhuwei 方便发一下你的 Mac 型号和系统版本吗

@Jerry23011
Copy link
Collaborator

Jerry23011 commented May 8, 2024

对于这种 stream 请求服务,目前 Easydict 界面刷新方式确实比较糟糕,会导致卡顿,但 2.7 版本相比 2.6,好像只是用 Swift 重写了 OpenAI 服务,界面相关的逻辑没有改,按理说接口请求方面应该不会有太大影响。

我用 Instrument 跑了一下,确实有明显 CPU 高占用,在内置 AI 翻译服务中同样可以复现,严重情况下还会直接导致 app 挂起转彩虹圈,但看起来像是 objc 的问题
截屏2024-05-08 22 55 25
截屏2024-05-08 22 48 06
我同样复现了#538 的问题,这个是因为查单词因 result 内容过长没渲染出来导致的
截屏2024-05-08 22 46 39

@tianzhuwei
Copy link

@tianzhuwei 方便发一下你的 Mac 型号和系统版本吗

Apple M1 Version 14.4.1 (23E224)

@tisfeng
Copy link
Owner

tisfeng commented May 9, 2024

不不,目前 OpenAI 翻译这种频繁刷新的 stream 服务会导致 CPU 高占用,甚至界面卡顿,这是已知问题,这个问题比较棘手,暂时没办法完全解决。

但我昨天突然想到了一个优化方案,应该能很大程度上缓解这种卡顿问题,晚上我会发个 PR 测试。

我同样复现了#538 的问题,这个是因为查单词因 result 内容过长没渲染出来导致的

目前查询窗口界面的刷新方式有缺陷,有时会刷新失败,导致卡在某个位置。如果是偶尔出现这种问题,可以暂时忽略,稍后我们再想办法解决。

@tisfeng
Copy link
Owner

tisfeng commented May 9, 2024

使用 2.6.1 和 2.7.1 差别还是挺大的, 感觉 2.7.1 能让电脑都卡顿; 当我输入这些文字的时候, 开启的是 2.7.1 比较卡, 退出之后输入文字都流畅了; 两个版本效果看视频

@Jerry23011 你使用相同的接口,分别在 2.6.1 和 2.7.1 版本下,都只开启一个 OpenAI 服务,对比测试看看它们的刷新流畅度是否有明显区别。

我们需要确认是否是 Swift 重写 OpenAI 导致了这个问题。

@Jerry23011
Copy link
Collaborator

我们需要确认是否是 Swift 重写 OpenAI 导致了这个问题。

测试了一圈我觉得不像是 Swift 导致的,我测试用 main 分支 tag 2.6.1 和 2.7.1,在两个版本下 OpenAI 翻译都用 gpt-3.5-turbo 流畅度几乎看不出差别,Instrument 中也同样

我看到 @wangbiye 在 2.7.1 上用的也是 gpt-3.5-turbo 但还是有明显卡顿,这点是我没测试出来的

因为 2.7.1 加入了自定义模型,如果用 gpt-3.5-turbo-16k 就能明显感觉卡顿,进程也会直接挂起

@Jerry23011
Copy link
Collaborator

Jerry23011 commented May 9, 2024

因为内置AI翻译服务也用的 BaseOpenAIService,我测试了一下各个模型,其中内置的8个模型里前两个都会造成卡顿挂起,但是后几个都不会,我觉得这个可能还和不同服务 stream 的速度有关?一些服务的 stream 速度太快,导致界面刷新速度跟不上 stream 的速度

我在 2.6.1 代码中手动添加了 gpt-3.5-turbo-16k,我的机型上也不会出现卡顿,但是同样是这个模型在 2.7.1 中就会直接导致 main thread 挂起

推测会不会是同样的模型在因为 Swift 重写后 parse 的性能提升所以 stream 速度提升,导致刷新速度跟不上,在一些老机型上更为明显(?)

@tisfeng tisfeng self-assigned this May 11, 2024
@tisfeng tisfeng added the fixed in next release The issue will be closed once next release is available label May 11, 2024
@tisfeng
Copy link
Owner

tisfeng commented May 12, 2024

2.7.2 版本已优化了 OpenAI 翻译卡顿问题。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working fixed in next release The issue will be closed once next release is available
Projects
None yet
Development

No branches or pull requests

4 participants