MI50 用ollama跑qwen3-coder-30b-a3b的速度测试

7月底QWen3-Coder的小模型终于发布啦,这次带来的是30b-a3b的MoE模型。

  • 在代理编程、代理浏览器使用和其他基础编程任务方面,性能优于其他开源模型。
  • 具备长上下文能力,原生支持256K个标记,使用Yarn可扩展至1M个标记,优化用于仓库级理解。
  • 支持代理编程,适用于大多数平台,如Qwen Code、CLINE,采用专门设计的函数调用格式。

Qwen3-Coder-30B-A3B-Instruct 有以下特性

  • Type: Causal Language Models
  • Training Stage: Pretraining & Post-training
  • Number of Parameters: 30.5B in total and 3.3B activated
  • Number of Layers: 48
  • Number of Attention Heads (GQA): 32 for Q and 4 for KV
  • Number of Experts: 128
  • Number of Activated Experts: 8
  • Context Length: 262,144 natively.

本次测试仍然是MI50-32G,ollama_0.10.1, ROCm_6.3.4

生成速度达到35 t/s

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: MI50 用ollama跑qwen3-coder-30b-a3b的速度测试

解决Trae在MacOS下开发C/C++的问题

VSCode下 C/C++插件是微软自己开发的,根据VSCode扩展商店政策,第三方Fork的VSCode项目是不允许使用的。

Trae下如果打开C/C++项目,默认会推荐安装ccls插件来支持。

Mac下使用还需要一点小改动。

首先通过brew安装ccls命令行

自动安装ccls和它的依赖比如llvm

再次通过Trae打开项目,发现仍然找不到标准头文件。

打开终端,输入命令

打印:

打开Trae,切换到扩展,点ccls的配置,点ccls.clang.extraArgs

根据前一个打印,修改这个值为:

重启Trae后,再点头文件,正常跳转

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 解决Trae在MacOS下开发C/C++的问题

解决apple silicon vscode远程到一个amd64容器里无法安装扩展到问题

在M1/M2/M3的MacOS上运行amd64的容器,采用命令行

进入容器后可以看到所有命令都是通过/run/rosetta/rosetta转译运行

如果需要通过vscode直接远程到容器内进行开发,目前版本1.88.1在容器内安装开发插件会失败,一直卡在扩展签名处,解决办法是:

修改remote的settings.json, 添加

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 解决apple silicon vscode远程到一个amd64容器里无法安装扩展到问题

YUV420P与NV12的图像格式描述差异

YUV420

NV12:

可以看出,就图像格式描述而言,它们都是3组数据,不同在于:
YUV420P的
U分量是plane:1、step:1、offset:0
V分量是plane:2,step:1、offset:0

NV12的
U分量plane:1、step:2、offset:0
V分量plane:1、step:2、offset:1

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: YUV420P与NV12的图像格式描述差异

WebCodecs in Chrome M86: Limitations

Supported

  • AudioDecoder can decode AAC, FLAC, MP3, Opus, and Vorbis.
  • VideoDecoder can decode VP8, VP9, H.264 and AV1 (AV1 not available on Android).
  • VideoEncoder can encode VP8 and VP9.
  • VideoTrackReader.
  • ImageDecoder can decode BMP, GIF, JPG, PNG, ICO, AVIF, and WebP.

Unsupported

  • AudioEncoder is not yet implemented.
  • VideoEncoder can encode H.264, but it is limited:
    • H.264 encoding is not available on all platforms.
    • The output format is Annex B. We expect the format to be AVC in the future.
  • new VideoFrame(pixelFormat, planes, frameInit) is not available.
  • ImageDecoder  can’t decode SVG. We don’t expect SVG to ever be supported.

Caveats

  • AudioDecoder and VideoDecoder call error(undefined) to report an error. We expect the value to be a DOMException in the future.
  • VideoDecoder, VideoEncoder, and EncodedVideoChunk are not available in Worker contexts. Worker support will be added in the future.
  • VideoEncoder does not emit VideoDecoderConfig objects to describe its output. We expect configs to be emitted in the future.
  • Constructing a VideoFrame from an ImageBitmap produces an I420 frame. We expect this to change to RGBA or an opaque format in the future.
  • In some cases a valid VideoFrame has format === null and planes === null. VideoFrame.createImageBitmap() is available. We expect to add explicit conversion APIs to address these cases in the future.
  • ImageFrame  does not provide YUV access. We expect that ImageDecoder will output VideoFrame objects in the future.
  • H.264 extradata and payload must be provided in AVC format.

Known Issues

AudioDecoder, VideoDecoder, and VideoEncoder may produce outputs or errors after calling reset().

有被爽到

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: WebCodecs in Chrome M86: Limitations

如何使用NodePlayer.js播放RTMP协议

简述

NodePlayer.js设计之初只是为了播放http-flv协议,但经常有客户想要知道能否播放RTMP协议,甚至RTSP协议,以往我们的回答都是不能。web浏览器没有开放TCP/UDP协议,当然无法实现RTMP、RTSP播放了。

但从 NodePlayer.js-v0.7版本开始,我们已经实现RTMP协议的播放了!
当然,不是TCP协议的RTMP, 没有这个基础条件。我们实现的方式,是通过WebSocket协议来和一个 websocket 2 tcp 服务交换协议,最终和RTMP服务器建立连接。

本播放器无需flash插件,和video.js等播放RTMP的方式完全不同。

目的

如果您正在构建新的直播项目,其实无需使用本技术。如今的流媒体服务端或者云服务,基本上都支持HTTP-FLV甚至WebSocket-FLV。
本功能是为以往使用Flash-Media-Server, Adobe-Media-Server, Nginx-RTMP, Red5,Wowza等服务端构建项目的用户,在不改变现有架构的条件下,无痛迁移到HTML5播放器。

部署方法

实际上无需过多要求,只需要一个 websocket to tcp的桥接服务。
这里,我们以一个非常轻量级,且开放源代码的ws-tcp-relay项目为例。
项目地址:https://github.com/isobit/ws-tcp-relay

进入https://github.com/isobit/ws-tcp-relay/releases ,根据服务端系统选择并下载应用程序

下载后,linux系统下添加可执行权限,然后执行

参数说明:
-b 使用binary格式传输
-p 绑定本机8080端口监听websocket连接
192.168.0.3:1935 需要桥接的远端或者本地 rtmp服务,本机可以填 127.0.0.1:1935

播放方法

使用NodePlayer.js-v0.7版播放器,播放地址

即可

如果要去掉端口号, ws-tcp-relay改为监听80端口,但可能会和webserver冲突
这里不清楚nginx反向代理是否有能力转websocket to tcp,如果能的话那就更方便。

播放器演示地址

http://www.nodemedia.cn/uploads/nodeplayer_rtmp.html

使用前请先运行ws-tcp-relay服务

RTSP流?

理论上,也是可以的,敬请期待。

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 如何使用NodePlayer.js播放RTMP协议

WordPress 在国内机房安装插件主题总是出现429 Too Many Requests错误的解决办法

这种情况不管是本地运行WordPress还是阿里云ecs上,安装更新、插件、主题,都会出现。估计是woredpress的cdn对国内ip做了限流。

我解决的办法是给添加一个http proxy来解决,注意一定要是http_proxy,socks5请加一层代理转换,比如privoxy。

非常简单,打开wp-config.php,在合适的位置添加:

WebRTC 研究系列 二、打通webrtc与rtmp

首先我们知道,Rtmp是一种客户端到服务端的技术,Peer to Server。WebRTC是一种客户端到客户端的技术,Peer to Peer。

Rtmp通过一个TCP连接,向服务端发送或接收连接信息,媒体数据。

WebRTC先使用ICE技术连接STUN/TURN,得到自己的连接信息。再绑定音视频设备获取媒体信息,拼装为SDP信令。两个客户端通过任意方式交换信令,建立客户端直接的连接,再使用RTP发送和接收媒体数据。

如果一个服务端实现了WebRTC客户端的能力,那么它也可以被认为是一个Peer,与用户浏览器的WebRTC客户端创建连接,获得客户端推送过来的媒体数据,就完成了Peer to Server的转换。

继续阅读“WebRTC 研究系列 二、打通webrtc与rtmp”

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: WebRTC 研究系列 二、打通webrtc与rtmp

macOS 10.14.6 安装cocoapods出错

xcode 11.3.1 已安装,执行

出现错误

执行下面的命令,安装后, 问题解决

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: macOS 10.14.6 安装cocoapods出错

用Go语言开发的新版NodeMediaServer

之前曾介绍过一款用Node.JS实现的开源RTMP流媒体服务端。目前更新到2.1.3版本,这是个从15年出开始接触Node.js作为研习而建立的项目。说起写完这个项目,对理解nodejs异步架构,rtmp网络协议还是起到了非常重要的作用。

rtmp协议如果用异步解析数据还是比较麻烦的,最早的版本写了个buffer缓冲,再用Generators/yield来转成同步逻辑,简单了许多。接触到async、await后又更新了个版本,代码可读性提高了不少。最后又学习了一个异步状态机的实现,比较满意。

继续阅读“用Go语言开发的新版NodeMediaServer”

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 用Go语言开发的新版NodeMediaServer