问题标签 [ray]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - `export OPENBLAS_NUM_THREADS=1`后CPU使用率有时超过100%是正常现象吗?
我正在使用 ray 来实现 Ape-X。按照这个指令,我设置export OPENBLAS_NUM_THREADS=1
(我已经验证我使用的 Numpy 使用 OPENBLAS via np.__config__.show()
)并且tf.Session
配置如下
然后我打开top
。大多数时候,我可以看到所有工作人员使用的 CPU 少于 100%。但是偶尔,我会看到一些 CPU 使用率超过 100%,如下图所示。我想知道这是否是正常现象?如果是错误,错误可能是什么?
ray - 您可以为调度程序与一般调整试验使用不同的停止条件吗
在 Ray Tune 中,对于调度程序和试验是否可以使用不同的停止条件,是否有任何指导?下面,我有一个基于 停止的异步超频带调度程序neg_mean_loss
,并基于 调整自身停止mean_f1
。
我应该对两者都使用相同的还是没关系?
kubernetes - 在 kubernetes 集群上使用带有 Jupyterhub 的 ray
我正在使用 Jupyterhub 和 Ray 构建 Kubernetes 集群,并希望用户访问 Jupyterhub 并在 k8s 上使用 Ray 集群。我的计划是使用 Jupyterhub 笔记本“ https://ray.readthedocs.io/en/latest/api.html ”中的 Ray API 连接 Ray 集群
然而,当我跑
我想知道我的方法是否是正确的方法以及如何解决错误。
amazon-ec2 - 从 Ray.remote 并行 Python 3 函数返回值的问题
我一直在使用 Ray 开发一个 EC2 并行云应用程序来设置集群和调度任务。然而,我有一个问题一直困扰着我。以下是一个非常简化的程序(在 3 个工作人员上运行)来说明它:-
这个的输出是: -
忽略警告,难题在于在 test_loop 的第一次迭代期间读取了 pop 的值,并行返回了三个乘积向量。但是,在下一次迭代中,pop 的值翻了一番,test_loop 将忽略它并保留旧值。谁能解释这里发生了什么,以及如何让远程函数调用按我的预期工作?
注意我不认为这是一个范围问题:pop 是全局定义的,并且没有在 test_loop 中重新分配。
ray - 是否可以肯定地将一名工作人员分配给集群中的一台主机?
我希望将每个工作人员分配给集群中的不同主机。例如,我有一个包含 3 台主机的集群,IP 地址分别为 192.168.0.100、192.168.0.101、192.168.0.102。我想创建 3 个工作人员,并将每个工作的任务分配给不同的主机。有可能吗?
python - ray `num_cpus` 是否用于实际分配 CPU?
使用 ray 框架时,有一个选项可以选择此任务所需的 CPU 数量,如此处所述。
前任:
但是,尚不清楚是否会有实际的 CPU 分配:
- 该函数将被分配
4
CPU(例如使用 CPU 亲和性,如taskset
linux 命令或cpuset
docker 参数) - 或者调度器将
num_cpus
仅在内部使用它作为调度元数据。让 ex 决定他是否可以开始一个需要 16 个 cpu 的新任务,其中只剩下 10 个。该任务仍然可以访问所有 CPU,并且可以“使用”比请求更多的 CPU 时间num_cpus
选项 2 似乎更有可能,但这在文档中没有说明。此外,GPU 似乎有一种选项 1,这使得调度程序的意图不清楚:
Ray 将自动为该进程设置环境变量 CUDA_VISIBLE_DEVICES。
该进程被配置为使用某个 GPU(但可以通过 reset 绕过它CUDA_VISIBLE_DEVICES
)
那么,num_cpus
在ray中是如何使用的呢?
python - 自定义模型权重不变(张量流)
我正在尝试在赛车模拟器中训练代理。我已经建立了一个自定义模型。我发现训练期间权重没有变化。
我正在尝试在赛车模拟器中训练代理。我按照此处的说明构建了一个自定义模型。我使用文档中显示的python API。我打印了权重(按weights = trainer.workers.foreach_worker(lambda ev: ev.get_policy().get_weights())
),我发现很大一部分权重没有改变。
定制型号:
自定义预处理器:
培训代码:
我发现很大一部分权重没有变化。我不知道为什么。
python - Ray 的 RLlib 如何使用 LazyFrames?
我试图找出 RLLib 如何有效地使用帧,即它如何避免将重复的帧保存到内存中,这在 OpenAI 基线中是通过 LazyFrames 完成的。
在 Ray 的 RLLibatari_wrapper.py
中,似乎所有观察结果都以普通 ndarray 格式存储:https ://github.com/ray-project/ray/blob/master/python/ray/rllib/env/atari_wrappers.py#L253
这与 OpenAI 基线中通常使用 LazyFrames 形成鲜明对比:https ://github.com/openai/baselines/blob/master/baselines/common/atari_wrappers.py#L217
这样做是因为 PyArrow 不能使用 LazyFrames 并且需要 numpy 数组吗?即使是这种情况,鉴于 RLLib 中的 _get_ob 输出是 4 个观察值的串联 numpy 数组,内存需求也不会比单独保存 4 个观察值并通过射线对象 ID 链接它们高得多? 我在这里想念什么?
c++ - Ray-AABB 交集函数的类隶属关系
我正在编写用于在 3D 空间中拾取鼠标的代码。到目前为止,我已经制作了 Ray 和 AABB 课程。我需要的是 Ray-AABB 相交的功能。我知道如何编写它并使其工作,我的问题是哪个类应该定义所述功能?它应该是 Ray 的成员还是 AABB 的成员,两者都不是?面向对象方法的最佳实践是什么?
对我来说,将该函数实现为“引擎”类的成员是最有意义的,更像是一个过程而不是一个函数。但是我希望我的代码真正面向对象。
python - 自定义观察空间的适当 conv_filter 规范是什么?
我正在尝试创建一个自定义 openai 健身房环境以用于光线强化学习环境。
目前我有一个 (6, 94) 的观察空间。但是,当我尝试在自定义环境中进行训练时,出现错误:
文档内容如下:
它没有具体说明要实现什么,也没有任何指向文献的链接来指定“模型”和“conv_filters”应该做什么。
对于 (6,94) 的情况,“dim”应该是 6 还是 94?conv_filters 是保持原样,还是每个形状都需要某种网络架构?如果是这样,链接在哪里?
编辑:事实证明它想要 CNN 的参数,现在尝试调整值,使其输出到所需的输出空间。
编辑2:
github 上提供的目录不是最新的 0.7.2:
https://github.com/ray-project/ray/blob/master/python/ray/rllib/models/catalog.py