Apple MLX 库的 R 接口
R interface to Apple's MLX library

原始链接: https://hughjonesd.github.io/Rmlx/index.html

这段代码演示了使用`mlx`库进行基本矩阵运算,该库专为GPU加速的数组计算而设计。创建了两个矩阵`a` (2x3) 和 `b` (3x2) 作为`mlx`数组。 示例展示了数组操作,例如行绑定 (`rbind`)、列绑定 (`cbind`) 和转置 (`t`)。标准矩阵代数使用`%*%`运算符进行矩阵乘法。 此外,它强调了诸如`sum`和`colMeans`之类的规约运算。使用列优先的扁平化方式计算累积和,方法是使用`cumsum`。最后,该代码演示了线性代数分解,包括QR、SVD、Cholesky和FFT,以及诸如叉积和求解线性系统之类的运算,所有这些都利用GPU来实现性能。结果始终是驻留在GPU上的`mlx`数组。

开发者dash2发布了苹果MLX机器学习库的一个新的R接口。 值得注意的是,代码大部分是“氛围编码”的——这意味着在没有C++先验知识的情况下,借助Codex和Claude等AI模型编写而成。 虽然在没有R绑定专业知识的情况下很难完全评估代码质量,但初步印象是积极的。 还有一个配套库RmlxStats,也在GPL许可下可用。 有趣的是,AI辅助导致了未经署名的直接从基础R复制的代码被意外包含。 该项目突出了使用AI编码工具的强大功能和潜在陷阱,展示了它们生成有效代码的能力,以及不准确和抄袭的实例。
相关文章

原文
a <- as_mlx(matrix(1:6, 2, 3))
b <- as_mlx(matrix(1:6, 3, 2))

# rbind, cbind, transpose
rbind(a, t(b))
#> mlx array [4 x 3]
#>   dtype: float32
#>   device: gpu
#>   values:
#>      [,1] [,2] [,3]
#> [1,]    1    3    5
#> [2,]    2    4    6
#> [3,]    1    2    3
#> [4,]    4    5    6
cbind(a, t(b))
#> mlx array [2 x 6]
#>   dtype: float32
#>   device: gpu
#>   values:
#>      [,1] [,2] [,3] [,4] [,5] [,6]
#> [1,]    1    3    5    1    2    3
#> [2,]    2    4    6    4    5    6

# Matrix algebra
a %*% b
#> mlx array [2 x 2]
#>   dtype: float32
#>   device: gpu
#>   values:
#>      [,1] [,2]
#> [1,]   22   49
#> [2,]   28   64

# Reductions
sum(a)
#> mlx array []
#>   dtype: float32
#>   device: gpu
#>   values:
#> [1] 21
colMeans(a)
#> mlx array [3]
#>   dtype: float32
#>   device: gpu
#>   values:
#> [1] 1.5 3.5 5.5

# Cumulative operations flatten column-major
cumsum(a)
#> mlx array [6]
#>   dtype: float32
#>   device: gpu
#>   values:
#> [1]  1  3  6 10 15 21

qr_res <- qr(a)
svd_res <- svd(a)
chol_res <- chol(a[, 1:2])
fft_res <- fft(a)
crossprod_res <- crossprod(a, b[1:2, ])
solve_res <- solve(a[, 1:2], b[1:2, ])
联系我们 contact @ memedata.com