Backend.AI内核的用户代码执行器
项目描述
多种编程语言的通用基础运行器。
它管理一个内部任务队列,以便按照FIFO顺序处理多个命令/代码执行请求,而不混淆控制台输出。
如何编写新的计算内核
继承ai.backend.kernel.BaseRunner并实现以下方法
async def init_with_loop(self)
在asyncio事件循环可用后调用。
大部分只是pass。
如果您的内核支持交互式用户输入,那么将self.user_input_queue作为一个asyncio.Queue对象。这是您的工作,利用队列对象等待用户输入。(参见ai/backend/kernel/python/inproc.py中的handle_input()方法作为参考)如果没有设置,那么尝试获取交互式用户输入将直接返回"<user-input is unsupported>"。
async def build_heuristic(self)
(批量模式)编写一个启发式代码,找到一些构建脚本或运行足够好的构建命令。
(阻塞)您不必担心重叠执行,因为基础运行器会处理。
async def execute_heuristic(self)
(批量模式)编写一个启发式代码,找到主程序。
(阻塞)您不必担心重叠执行,因为基础运行器会处理。
async def query(self, code_text)
(查询模式)直接运行给定的代码片段。根据语言/运行时,您可能需要创建一个临时文件并执行外部程序。
(阻塞)您不必担心重叠执行,因为基础运行器会处理。
async def complete(self, data)
(查询模式) 接收一个包含用户当前输入代码行的字典数据,并返回一个可以自动完成的字符串列表。
(非阻塞) 应该实现此方法以异步方式与代码执行同时运行。
async def interrupt(self)
(查询模式) 向正在运行的程序发送中断信号。实现方式由您决定。当前的Python运行器为进程内的查询模式执行启动一个线程,并使用ctypes黑客技术将其中的KeyboardInterrupt异常抛出。
(非阻塞) 应该实现此方法以异步方式与代码执行同时运行。
注意:现有代码是良好的参考!
如何在Backend.AI计算内核中使用它
使用pip通过Dockerfile中的RUN指令安装此软件包。然后,设置如下的CMD指令
CMD ["/home/backend.ai/jail", "-policy", "/home/backend.ai/policy.yml", \
"/usr/local/bin/python", "-m", "ai.backend.kernel", "<language>"]
其中<language>应该是ai/backend/kernel/__main__.py文件中定义的lang_map变量支持的编程语言名称之一。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
backend.ai-kernel-runner-1.4.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 84c0928fe2b61e0b182e6491f66bcfc0565f2eb90d17459cc079c29fd7f38afe |
|
MD5 | b034727a49ea531b2a483b3b28ca1118 |
|
BLAKE2b-256 | ca8291ab323be2521455f0de0d7ea6dd2401bd8d7197b3c1627b0d5eb061b8aa |
backend.ai_kernel_runner-1.4.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8bf0b2719d7b0ff5c693da177dd99e248cb0958f8753d0fd7fe63320b0da9284 |
|
MD5 | c8205428785a3699be168b7adee73c8c |
|
BLAKE2b-256 | afe3f56813a4564f53bd9ef38307e152783038130bd5c98f79ce0923e8d67d0f |