Posit Cloud
人工智能与机器学习
概述
人工智能(AI)和机器学习(ML)是当今科技领域最热门的话题之一。AI是指计算机系统能够执行通常需要人类智能的任务,如视觉识别、语音识别和决策制定。ML是AI的一个子集,专注于开发能够从数据中学习的算法。
关键技术
深度学习
深度学习是ML的一个分支,使用多层神经网络来处理复杂的数据模式。它在图像和语音识别方面取得了显著的成果。
强化学习
强化学习是一种通过试错来学习的ML方法。它通常用于游戏和机器人控制等领域。
应用领域
医疗保健
AI和ML在医疗诊断、药物发现和个性化治疗方面有广泛应用。
金融
在金融领域,AI用于风险管理、欺诈检测和算法交易。
挑战
数据隐私
随着AI和ML的发展,数据隐私成为一个重要问题。如何在不侵犯个人隐私的情况下利用数据是一个挑战。
伦理问题
AI系统的决策过程可能不透明,这引发了关于伦理和责任的讨论。
未来展望
AI和ML的未来充满希望,但也伴随着挑战。随着技术的进步,我们期待看到更多创新的应用和解决方案。
概述
在 Posit Cloud 上,您可以通过网页浏览器创建数据项目并发布结果。当您希望将所有静态文档和交互式应用程序集中在一个地方时,请使用 Posit Cloud。
有几种方法可以将 Quarto 内容发布到 Posit Cloud:
使用
quarto publish
命令发布在本地机器上渲染的静态内容。使用 rsconnect-python Python 包或 rsconnect R 包发布代码,以便在 Posit Cloud 上渲染。
使用 Jenkins、Airflow 或 GitHub Actions 等持续集成(CI)服务,渲染并发布到 Posit Cloud。
下面将详细介绍每种选项。如果您刚刚开始,我们强烈建议使用第一种方法(quarto publish
)。然后,随着您的需求发展,您可以考虑其他更复杂的选择。
发布命令
quarto publish
命令是发布本地渲染内容的最简单方法。从您的项目所在目录执行 quarto publish
命令以发布到 Posit Cloud:
终端
quarto publish posit-cloud
如果您之前未发布到 Posit Cloud,系统会提示您输入您的令牌和令牌密钥(可在账户 > 令牌下找到):
终端
$ quarto publish posit-cloud
? 令牌: › F69A5954CC09A97B7D74C73C6C7384EB
? 令牌密钥: › ****************************************
认证后,您的内容将被渲染并发布,然后浏览器将打开以查看其在 Posit Cloud 上的页面。
您的先前发布记录将存储在项目或文档目录中的 _publish.yml
文件中。该文件存储了发布内容的服务、ID 和 URL。例如:
- source: project
posit-cloud:
- id: "1234"
url: "https://posit.cloud/content/1234"
账户信息不存储在此文件中,因此适合将其检入版本控制并与多个发布者共享。
您可以通过提供以下命令行选项来自定义 quarto publish
的行为:
选项 | 行为 |
---|---|
--no-prompt |
不提示确认发布操作。 |
--no-browser |
发布后不打开浏览器。 |
--no-render |
发布前不重新渲染。 |
要发布文档而不是网站或书籍,请提供文档的路径:
终端
quarto publish posit-cloud document.qmd
使用代码发布
在前面的示例中,我们在本地渲染内容,然后将其发布到 Posit Cloud。然而,在某些情况下,您可能希望将源代码发布到 Posit Cloud,然后在服务器上渲染。
发布代码的工具因您使用的是 Knitr(R)还是 Jupyter(Python)引擎而异,因此我们将在下面分别介绍它们。
Knitr(R)
rsconnect R 包包含一组发布函数,您可以使用这些函数将带有 R 代码的 Quarto 项目发布到 Posit Cloud。
您的凭据可以在 Posit Cloud 的账户 > 令牌下找到。要添加您的凭据,请使用:
library(rsconnect)
setAccountInfo(
name = 'abcde-nora-jones',
token = 'F69A5954CC09A97B7D74C73C6C7384EB',
secret = 'lcVIQGISmcSxG5VJhuRXNWHrWs7wLwaoubm8AcC7',
server = 'posit.cloud'
)
添加凭据后,您可以发布您的项目。这里我们发布一个文档和一个网站:
library(rsconnect)
deployDoc("document.qmd")
deployApp("./my-site")
RStudio IDE
如果您使用的是 RStudio IDE,还支持一键发布到 Posit Cloud。使用源编辑器或查看窗格中的发布按钮 来发布文档或网站。
有关更多详细信息,请参阅 Posit Cloud 文档中的 发布。
Jupyter(Python)
rsconnect-python Python 包提供了一个命令行界面(CLI),您可以使用它将使用 Jupyter 的 Quarto 文档和网站发布到 Posit Cloud。要使用 CLI:
首先,安装 rsconnect-python 包并为发布配置 Posit Cloud 凭据(值可在账户 > 令牌下找到):
终端
rsconnect add \ --account 'abcde-nora-jones' \ --name 'posit.cloud' \ --token 'F69A5954CC09A97B7D74C73C6C7384EB' \ --secret 'lcVIQGISmcSxG5VJhuRXNWHrWs7wLwaoubm8AcC7' \ --server 'posit.cloud'
然后,从您的项目目录使用
rsconnect deploy quarto
命令:终端
rsconnect deploy quarto
请参阅发布 Quarto 内容的完整文档,以获取有关使用 CLI 进行发布的更多详细信息。
持续集成
您还可以使用 Jenkins、Airflow 或 GitHub Actions 等持续集成 (CI) 服务部署 Quarto 内容。在大多数情况下,这将涉及脚本化 quarto publish
命令,但在 GitHub Actions 的情况下,您可以利用标准的 Quarto 发布操作。
当从 CI 服务发布到 Posit Cloud 时,您需要考虑是否希望直接在 CI 服务器上执行您的 Python 或 R 代码,或者是否希望利用之前冻结的执行结果。我们将首先探讨这种可能性,然后继续探讨如何从 CI 发布。
冻结计算
根据您的运行时需求(包、数据库凭证等)的复杂程度,您可能会发现将 Python 和 R 代码的执行限制在具有所需软件和凭证的本地上下文中更为方便。
为了确保 R、Python 和 Julia 代码仅在本地执行,请通过在 _quarto.yml
中添加以下内容,配置您的项目以使用 Quarto 的 冻结 功能:
_quarto.yml
execute:
freeze: auto
现在,完全重新渲染您的站点:
Terminal
quarto render
如果您在项目中有可执行代码,您会注意到在项目的顶层创建了一个 _freeze
目录。此目录存储计算结果,并应将其提交到版本控制中。每当你更改包含可执行代码的 .qmd
文件时,它将在下一次渲染时自动重新运行,并且更新后的计算结果将存储在 _freeze
中。
如果您希望 CI 发布执行项目中包含的所有 Python 和 R 代码,您需要确保在 CI 服务器上安装了这些工具的必要版本(以及任何所需的包)。如何做到这一点超出了本文的范围——要了解更多关于保存和恢复依赖项的信息,请参阅关于虚拟环境的文章。
发布命令
您可以通过脚本化 quarto publish
命令,使用任何 CI 服务将 Quarto 内容发布到 Posit Cloud。为此,您需要确保您的凭证作为环境变量在 CI 服务器上可用。
变量 | 描述 |
---|---|
POSIT_CLOUD_TOKEN |
用户的身份验证令牌。 |
POSIT_CLOUD_SECRET |
与令牌关联的密钥。 |
此外,您还需要指定要更新的目标内容的 ID。这通常从发布期间保存到项目目录中的 _publish.yml
文件中提取。例如:
_publish.yml
- source: project
posit-cloud:
- id: 1234
url: 'https://posit.cloud/content/1234/'
假设您有一个如上所示的 _publish.yml
,您可以使用以下命令从 CI 发布到 Posit Cloud:
Terminal
export POSIT_CLOUD_TOKEN=F69A5954CC09A97B7D74C73C6C7384EB
export POSIT_CLOUD_SECRET=lcVIQGISmcSxG5VJhuRXNWHrWs7wLwaoubm8AcC7
quarto publish posit-cloud
或者,如果您没有 _publish.yml
文件,可以在命令行上指定 ID,如下所示:
Terminal
quarto publish posit-cloud --id 1234
GitHub Actions
如果您的 CI 服务是 GitHub Actions,那么您可以利用 Quarto 的标准 发布操作 来自动部署到 Posit Cloud。
用户凭证
在创建发布操作之前,您需要确保您的仓库具有发布到 Posit Cloud 所需的凭证。您可以按如下方式操作:
如果您还没有,请在 Posit Cloud 中创建一个令牌和令牌密钥(在账户 > 令牌下)。
将令牌密钥添加到仓库的操作 Secrets 中(可在仓库 设置 中访问)。在 Repository Secrets 下,您会看到一个 New repository secret 按钮:
点击按钮并将步骤 1 中的 API 密钥作为名为
POSIT_CLOUD_SECRET
的密钥添加:
发布操作
要设置您的发布操作,请在您的仓库中创建一个 .github/workflows/publish.yml
文件。如果您正在冻结计算(即不在操作中运行 Python 或 R 代码),那么文件将如下所示:
.github/workflows/publish.yml
on:
workflow_dispatch:
push:
branches: main
name: Quarto Publish
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- name: 检出仓库
uses: actions/checkout@v4
- name: 设置 Quarto
uses: quarto-dev/quarto-actions/setup@v2
- name: 渲染并发布
uses: quarto-dev/quarto-actions/publish@v2
with:
target: posit-cloud
POSIT_CLOUD_TOKEN: F69A5954CC09A97B7D74C73C6C7384EB
POSIT_CLOUD_SECRET: ${{ secrets.POSIT_CLOUD_SECRET }}
一旦你将更新后的仓库(包括发布操作和 _freeze
目录)推送到 GitHub,你的操作将在此及后续提交中运行,自动渲染并发布到 Posit Cloud。
执行代码
如果你愿意,你也可以配置 GitHub Actions 在渲染过程中执行 Python 或 R 代码。虽然这可能本能地看起来是最好的方法,但请考虑在 GitHub Actions 等 CI 服务中执行代码时所施加的要求:
你需要在CI环境中重新构建所有依赖项(R、Python或Julia以及所需包的正确版本)。
如果你的代码需要任何特殊权限(例如数据库或网络访问),这些权限也需要存在于CI服务器上。
你的项目可能包含一些难以再次轻松执行的文档(例如几年前使用旧版本包的博客文章)。这些文档可能需要单独启用
freeze
以防止在CI上执行。
前提条件
确保你的代码可以在 GitHub Action 中执行的最佳方式是使用虚拟环境,如 venv 或 renv 与你的项目一起使用(下面我们将为每种方式提供示例操作)。如果你不熟悉使用这些工具,请查看关于使用 虚拟环境 与 Quarto 的文章以了解更多信息。
一旦你决定在 GitHub Action 中执行代码,你可以从你的 _quarto.yml
配置中移除上述的 freeze: auto
。请注意,如果你想对某些文档或目录有选择地使用 freeze
,这仍然是可能的(对于目录,在该目录中创建一个 _metadata.yml
文件,并在其中指定你的 freeze 配置——这是 Quarto 对博客项目 posts
文件夹的默认操作)。
示例:Jupyter 与 venv
以下是一个完整的 GitHub Action 示例,它安装 Python、Jupyter 以及从 requirements.txt
中的包依赖项,然后执行代码并将输出渲染到 Posit Cloud:
.github/workflows/publish.yml
on:
workflow_dispatch:
push:
branches: main
name: Quarto Publish
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Quarto
uses: quarto-dev/quarto-actions/setup@v2
- name: Install Python and Dependencies
uses: actions/setup-python@v4
with:
python-version: '3.10'
cache: 'pip'
- run: pip install jupyter
- run: pip install -r requirements.txt
- name: Render and Publish
uses: quarto-dev/quarto-actions/publish@v2
with:
target: posit-cloud
POSIT_CLOUD_TOKEN: F69A5954CC09A97B7D74C73C6C7384EB
POSIT_CLOUD_SECRET: ${{ secrets.POSIT_CLOUD_SECRET }}
示例:Knitr 与 renv
以下是一个完整的 GitHub Action 示例,它安装 R 以及从 renv.lock
中的包依赖项,然后执行代码并将输出渲染到 Posit Cloud:
.github/workflows/publish.yml
on:
workflow_dispatch:
push:
branches: main
name: Quarto Publish
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Quarto
uses: quarto-dev/quarto-actions/setup@v2
- name: Install R
uses: r-lib/actions/setup-r@v2
with:
r-version: '4.2.0'
- name: Install R Dependencies
uses: r-lib/actions/setup-renv@v2
with:
cache-version: 1
- name: Render and Publish
uses: quarto-dev/quarto-actions/publish@v2
with:
target: posit-cloud
POSIT_CLOUD_TOKEN: F69A5954CC09A97B7D74C73C6C7384EB
POSIT_CLOUD_SECRET: ${{ secrets.POSIT_CLOUD_SECRET }}
附加选项
在一个更大的 GitHub 仓库中可能存在一个 Quarto 项目,其中 Quarto 项目并不位于顶层目录。在这种情况下,向 publish
操作的调用中添加一个 path
输入。例如:
- name: Render and Publish
uses: quarto-dev/quarto-actions/publish@v2
with:
target: posit-cloud
path: subdirectory-to-use
POSIT_CLOUD_TOKEN: F69A5954CC09A97B7D74C73C6C7384EB
POSIT_CLOUD_SECRET: ${{ secrets.POSIT_CLOUD_SECRET }}
默认情况下,quarto publish
会在发布前重新渲染你的项目。然而,如果你将渲染后的输出存储在版本控制中,你不需要 GitHub 操作重新渲染项目。在这种情况下,向 publish
操作添加选项 render: false
:
- name: Render and Publish
uses: quarto-dev/quarto-actions/publish@v2
with:
target: posit-cloud
render: false
POSIT_CLOUD_TOKEN: F69A5954CC09A97B7D74C73C6C7384EB
POSIT_CLOUD_SECRET: ${{ secrets.POSIT_CLOUD_SECRET }}