如果你是一名开发者或者对AI应用开发感兴趣最近可能被一个词刷屏了RTX AI。从CES上铺天盖地的“AI PC”宣传到各大OEM厂商纷纷推出搭载NPU的笔记本再到英伟达在GTC上宣布的“RTX AI平台”这个概念似乎无处不在。但一个核心问题始终悬而未决对于开发者来说这些硬件上的AI算力到底能用来做什么难道只是跑跑本地语音降噪、背景虚化或者一个聊胜于无的AI助手吗最近在BW2026上亮相的RTX Spark真机或许给出了一个更激动人心的答案。它不是一个简单的应用而是一个运行在个人PC上的、基于Apache Spark的分布式数据处理与AI推理平台。简单来说它试图将我们熟悉的、用于处理海量数据的“大数据引擎”Spark与英伟达RTX显卡强大的并行计算能力结合起来让你手边的轻薄本或高性能笔记本瞬间变成一个可以处理复杂数据流水线和运行大模型推理的“个人超算节点”。这篇文章我们不谈空洞的“AI赋能未来”而是聚焦一个非常实际的问题RTX Spark到底是什么它能解决开发者哪些具体的痛点我们又该如何上手体验我将结合BW2026上看到的信息、技术原理的拆解以及一个可操作的本地环境搭建与示例运行指南为你彻底讲清楚这个可能改变个人AI开发工作流的新工具。1. RTX Spark它到底解决了什么真问题在深入技术细节之前我们必须先理解RTX Spark出现的背景和它瞄准的痛点。否则它很容易被误解为又一个“为AI而AI”的营销概念。痛点一个人开发者的算力困境。你想在本地微调一个7B参数的模型或者对一份中等规模的数据集几十GB进行复杂的特征工程和模型训练。租用云GPU实例成本不菲且存在数据安全和传输延迟问题。而仅靠CPU等待时间可能以天为单位严重拖慢迭代速度。你的RTX显卡在训练时利用率很高但在数据处理ETL、特征提取等环节却常常闲置。RTX Spark的核心价值就是最大化利用你本地已有的GPU资源将整个AI数据流水线加速。痛点二从原型到生产的环境割裂。很多AI项目在本地用Jupyter Notebook和小数据集跑通后一旦要处理真实数据量就必须将代码迁移到云上的Spark集群或Kubernetes环境。这中间涉及环境配置、依赖管理、资源调度等一系列繁琐工作调试成本极高。RTX Spark提供了一个与生产环境Spark API高度兼容的本地运行时。这意味着你可以在笔记本上用与云端集群相同的代码PySpark开发和测试完整的数据处理流水线确认无误后再无缝部署到大规模集群极大降低了“最后一公里”的部署风险。痛点三复杂的本地AI开发环境配置。让Spark在单机环境下运行起来并正确调用GPU进行计算本身就是一个技术挑战。你需要配置Java、Hadoop用于本地文件系统模拟、Spark、CUDA、cuDF、cuML等一系列组件版本兼容性问题足以让人崩溃。RTX Spark的价值在于它很可能以预配置的容器或一体化安装包的形式出现由英伟达官方完成底层所有依赖的适配和优化开发者只需一个命令就能获得一个立即可用的、GPU加速的Spark环境。所以RTX Spark不是一个玩具。它的目标是让每个拥有RTX显卡的开发者都能在本地获得一个接近生产环境的、GPU加速的大数据与AI一体化开发平台。这直接降低了AI应用开发的门槛和迭代成本。2. 核心概念拆解Spark on GPU 与 RTX AI 栈要理解RTX Spark需要拆解两个关键部分Spark on GPU 和英伟达的 RTX AI 软件栈。2.1 Apache Spark 与 GPU 加速Apache Spark是一个开源的大规模数据处理引擎以其内存计算和易用的APIScala, Java, Python, R著称。传统上Spark在CPU集群上运行。Spark on GPU是指利用GPU的并行计算能力来加速Spark作业中的特定计算密集型任务例如SQL/DataFrame操作通过插件如RAPIDS Accelerator for Apache Spark将过滤、连接、聚合等操作下推到GPU执行。机器学习通过Spark MLlib或集成cuMLRAPIDS的机器学习库在GPU上加速模型训练如XGBoost、线性回归、K-means。数据处理库使用cuDFGPU DataFrame库替代Pandas在GPU上执行数据转换。在RTX Spark中你的个人PC就是一个“单节点Spark集群”。Spark Driver和Executor都运行在同一台机器上但计算任务会被自动调度到GPU上执行。2.2 英伟达 RTX AI 软件栈这是英伟达为RTX系列GPU打造的一整套AI开发与部署工具链RTX Spark是其中的关键一环。它可能包含底层驱动与CUDA提供基础的GPU计算能力。TensorRT / TensorRT-LLM用于大模型的高性能推理优化。RAPIDS 套件cuDF, cuML, cuGraph等用于GPU加速的数据科学。Spark RAPIDS Accelerator连接Spark和RAPIDS的桥梁。容器化运行时可能基于NVIDIA Container Toolkit原NVIDIA Docker确保环境一致性。RTX Spark可以看作是这套软件栈的一个“上层应用”或“集成展示”它封装了从数据加载、处理到模型训练/推理的完整流水线并针对RTX GPU进行了端到端优化。3. 环境准备在个人PC上搭建RTX Spark体验环境由于RTX Spark可能尚未正式发布公开安装包我们将基于现有开源组件搭建一个最接近其技术形态的本地环境。这能帮助你理解其底层原理并为将来正式版上手做好准备。前置条件操作系统Ubuntu 22.04 LTS 或 Windows 11 with WSL2推荐Ubuntu兼容性更好。本文以Ubuntu 22.04为例。GPU英伟达RTX系列显卡如RTX 4060, 4070, 4080等确保支持CUDA。驱动已安装最新版NVIDIA显卡驱动。存储至少50GB可用空间。网络可访问互联网以下载依赖。3.1 步骤一安装NVIDIA驱动与CUDA Toolkit这是最基础也是最重要的一步。我们选择CUDA 12.2版本这是一个长期支持且与多数AI框架兼容良好的版本。# 1. 更新系统包列表 sudo apt update sudo apt upgrade -y # 2. 安装依赖如果尚未安装 sudo apt install build-essential # 3. 前往 NVIDIA 开发者网站根据你的系统选择 CUDA 12.2 的安装命令。 # 通常对于 Ubuntu 22.04你可以使用以下网络安装方式 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub sudo add-apt-repository deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ / sudo apt update sudo apt install -y cuda-12-2 # 4. 将CUDA路径添加到环境变量 echo export PATH/usr/local/cuda-12.2/bin${PATH::${PATH}} ~/.bashrc echo export LD_LIBRARY_PATH/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}} ~/.bashrc source ~/.bashrc # 5. 验证安装 nvidia-smi # 应显示驱动版本和GPU信息 nvcc --version # 应显示CUDA 12.2编译器版本3.2 步骤二安装NVIDIA Container Toolkit为了后续可能的容器化部署我们提前安装此工具。# 1. 添加NVIDIA容器工具包仓库 distribution$(. /etc/os-release;echo $ID$VERSION_ID) curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \ sed s#deb https://#deb [signed-by/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list # 2. 安装工具包 sudo apt update sudo apt install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtimedocker sudo systemctl restart docker3.3 步骤三安装JavaSpark依赖Spark运行需要Java环境。sudo apt install -y openjdk-11-jdk java -version # 确认版本为113.4 步骤四安装Apache Spark并集成GPU加速我们将安装Spark并配置其使用GPU资源。# 1. 下载Spark选择与CUDA 12.2兼容的预编译版本此处以Spark 3.5.0为例 cd ~ wget https://archive.apache.org/dist/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz tar -xzf spark-3.5.0-bin-hadoop3.tgz sudo mv spark-3.5.0-bin-hadoop3 /opt/spark # 2. 设置Spark环境变量 echo export SPARK_HOME/opt/spark ~/.bashrc echo export PATH$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin ~/.bashrc source ~/.bashrc # 3. 下载Spark RAPIDS加速器插件 # 该插件允许Spark SQL/DataFrame操作在GPU上运行。 # 前往 https://repo1.maven.org/maven2/com/nvidia/rapids-4-spark_2.12/ 查找与Spark 3.5.0和CUDA 12.2兼容的版本。 # 例如版本 24.02.0 可能是一个选择请根据发布页确认最新兼容版本。 cd /opt/spark/jars wget https://repo1.maven.org/maven2/com/nvidia/rapids-4-spark_2.12/24.02.0/rapids-4-spark_2.12-24.02.0.jar # 注意还需要下载cudf等配套jar包具体依赖请参考RAPIDS官方文档。这是一个简化示例。3.5 步骤五安装Python环境与PySpark# 1. 安装Miniconda用于管理Python环境 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda echo export PATH$HOME/miniconda/bin:$PATH ~/.bashrc source ~/.bashrc # 2. 创建并激活一个专门的PySpark环境 conda create -n pyspark-gpu python3.10 -y conda activate pyspark-gpu # 3. 安装PySpark和GPU相关Python库 pip install pyspark3.5.0 # 安装RAPIDS的cuDF和cuML注意需要与CUDA版本严格匹配 # 访问 https://rapids.ai/start.html 获取针对你系统的conda安装命令。 # 例如对于CUDA 12.2 conda install -c rapidsai -c conda-forge -c nvidia \ cudf24.02 cuml24.02 python3.10 cuda-version12.2至此一个基础的、支持GPU加速的Spark本地开发环境就搭建完成了。这相当于手动组装了一个“RTX Spark”的核心引擎。4. 核心流程体验编写并运行一个GPU加速的PySpark作业现在让我们通过一个实际的例子感受一下在本地用GPU运行Spark作业的流程。我们将对一个数据集进行简单的数据清洗和聚合操作对比CPU和GPU执行的性能差异。4.1 准备示例数据我们生成一个模拟的销售数据CSV文件。# 文件generate_data.py import pandas as pd import numpy as np # 生成1000万行数据约800MB np.random.seed(42) n_rows 10_000_000 data { transaction_id: range(n_rows), customer_id: np.random.randint(1000, 10000, n_rows), product_id: np.random.choice([P001, P002, P003, P004, P005], n_rows), amount: np.random.uniform(10, 500, n_rows).round(2), region: np.random.choice([North, South, East, West], n_rows), transaction_date: pd.date_range(2023-01-01, periodsn_rows, freqS).strftime(%Y-%m-%d %H:%M:%S) } df_pandas pd.DataFrame(data) df_pandas.to_csv(sales_data_10m.csv, indexFalse) print(示例数据已生成sales_data_10m.csv)在终端运行python generate_data.py生成数据。4.2 编写CPU版本的PySpark作业# 文件spark_cpu_demo.py from pyspark.sql import SparkSession from pyspark.sql.functions import col, sum, count, avg import time # 1. 创建SparkSession使用CPU spark SparkSession.builder \ .appName(SalesAnalysis_CPU) \ .master(local[*]) \ # 使用所有CPU核心 .config(spark.driver.memory, 4g) \ .config(spark.executor.memory, 4g) \ .getOrCreate() # 2. 读取数据 start_time time.time() df spark.read.csv(sales_data_10m.csv, headerTrue, inferSchemaTrue) load_time time.time() - start_time print(f数据加载时间CPU: {load_time:.2f} 秒) print(f数据量: {df.count()} 行) # 3. 执行数据分析按地区和产品统计销售额和交易笔数 start_time time.time() result_cpu df.groupBy(region, product_id) \ .agg( sum(amount).alias(total_sales), count(*).alias(transaction_count), avg(amount).alias(avg_transaction) ) \ .orderBy(region, col(total_sales).desc()) # 触发计算并收集结果 result_cpu.show(truncateFalse) compute_time_cpu time.time() - start_time print(f数据分析计算时间CPU: {compute_time_cpu:.2f} 秒) # 4. 停止Spark会话 spark.stop()4.3 编写GPU版本的PySpark作业要启用GPU加速我们需要在创建SparkSession时添加RAPIDS插件的配置。# 文件spark_gpu_demo.py from pyspark.sql import SparkSession from pyspark.sql.functions import col, sum, count, avg import time import os # 设置环境变量指向RAPIDS插件jar包根据你的实际路径调整 os.environ[PYSPARK_SUBMIT_ARGS] --jars /opt/spark/jars/rapids-4-spark_2.12-24.02.0.jar pyspark-shell # 1. 创建SparkSession启用GPU加速 spark SparkSession.builder \ .appName(SalesAnalysis_GPU) \ .master(local[*]) \ .config(spark.driver.memory, 4g) \ .config(spark.executor.memory, 4g) \ # 关键配置启用RAPIDS插件 .config(spark.plugins, com.nvidia.spark.SQLPlugin) \ .config(spark.rapids.sql.enabled, true) \ .config(spark.rapids.sql.concurrentGpuTasks, 2) \ # 根据GPU调整 .config(spark.sql.execution.arrow.maxRecordsPerBatch, 0) \ .config(spark.rapids.memory.gpu.pooling.enabled, false) \ .getOrCreate() # 2. 读取数据此步骤可能仍在CPU上取决于插件配置 start_time time.time() df spark.read.csv(sales_data_10m.csv, headerTrue, inferSchemaTrue) load_time time.time() - start_time print(f数据加载时间GPU: {load_time:.2f} 秒) print(f数据量: {df.count()} 行) # 3. 执行数据分析聚合操作应被下推到GPU执行 start_time time.time() result_gpu df.groupBy(region, product_id) \ .agg( sum(amount).alias(total_sales), count(*).alias(transaction_count), avg(amount).alias(avg_transaction) ) \ .orderBy(region, col(total_sales).desc()) result_gpu.show(truncateFalse) compute_time_gpu time.time() - start_time print(f数据分析计算时间GPU: {compute_time_gpu:.2f} 秒) # 4. 可以查看Spark UI确认任务是否在GPU上执行 # Spark UI通常运行在 http://localhost:4040 print(Spark UI 地址: http://localhost:4040) # 5. 停止Spark会话 spark.stop()4.4 运行与对比在激活的pyspark-gpuConda环境中分别运行两个脚本# 运行CPU版本 spark-submit spark_cpu_demo.py # 运行GPU版本 spark-submit spark_gpu_demo.py预期观察与结果分析日志输出在GPU版本的日志中你应该能看到类似GpuColumnarToRow、GpuFilter、GpuHashAggregate等字样这表明操作正在GPU上执行。Spark UI访问http://localhost:4040在“Executors”标签页如果配置成功应该能看到GPU资源的使用情况。性能对比对于聚合、排序等计算密集型操作GPU版本的计算时间compute_time_gpu通常会显著低于CPU版本compute_time_cpu。数据加载时间可能相差不大因为I/O是瓶颈。加速比CPU时间/GPU时间可能达到3倍甚至10倍以上具体取决于操作复杂度和数据规模。核心体验代码几乎无需改动。你只需要在Spark配置中启用RAPIDS插件原本的PySpark DataFrame API就能自动利用GPU加速。这正是RTX Spark想带来的“无缝”体验。5. 深入探索集成cuML进行GPU加速的机器学习数据处理只是第一步RTX Spark更大的潜力在于端到端的AI流水线。让我们尝试在同一个Spark作业中使用cuML进行一个简单的机器学习任务。假设我们在完成上述销售数据聚合后想基于每个产品的历史销售数据total_sales,transaction_count预测下一个周期的销售额。我们将使用GPU加速的K-Means聚类算法。# 文件spark_cuml_demo.py from pyspark.sql import SparkSession, functions as F from pyspark.ml.feature import VectorAssembler, StandardScaler from pyspark.ml.clustering import KMeans as SparkKMeans # 注意此处演示标准Spark MLlib的KMeans。要使用cuML通常需要将数据转换为cuDF DataFrame。 # 更直接的集成方式可能是使用Spark Rapids ML库仍在发展中或直接在UDF中调用cuML。 # 以下是一个概念性流程展示思路。 import cudf from cuml.cluster import KMeans as cuKMeans import numpy as np # 1. 创建支持GPU的SparkSession配置同上 spark SparkSession.builder \ .appName(SalesClustering_GPU) \ .master(local[*]) \ .config(spark.plugins, com.nvidia.spark.SQLPlugin) \ .config(spark.rapids.sql.enabled, true) \ .getOrCreate() # 2. 加载并预处理数据使用GPU加速的Spark SQL df spark.read.csv(sales_data_10m.csv, headerTrue, inferSchemaTrue) # 假设我们按产品和日期聚合出每日销售额作为特征 daily_sales_df df.groupBy(F.date_trunc(day, F.col(transaction_date)).alias(day), product_id) \ .agg(F.sum(amount).alias(daily_sales)) \ .orderBy(product_id, day) # 3. 将数据转换为Pandas DataFrame小规模数据用于演示然后转为cuDF # 注意大规模数据应使用迭代器或分布式方式转换。 pandas_df daily_sales_df.toPandas() # 此步骤将数据收集到Driver端仅适用于演示 gpu_df cudf.from_pandas(pandas_df[[daily_sales]]) # 将特征列转为cuDF # 4. 使用cuML在GPU上进行K-Means聚类 kmeans cuKMeans(n_clusters3, random_state42) kmeans.fit(gpu_df) labels kmeans.predict(gpu_df) # 5. 将聚类结果添加回原DataFrame pandas_df[cluster] labels.to_pandas() # 将结果转回Pandas result_spark_df spark.createDataFrame(pandas_df) # 转回Spark DataFrame print(聚类中心 (GPU):) print(kmeans.cluster_centers_) result_spark_df.select(product_id, day, daily_sales, cluster).show(20) # 6. 停止Spark spark.stop()这个示例展示了混合工作流使用Spark进行分布式数据准备和ETL然后将中间结果适合放入单卡显存的数据转移到cuDF利用cuML进行GPU加速的模型训练。未来的RTX Spark可能会通过更紧密的集成如Spark Rapids ML来简化这个流程。6. 常见问题与排查思路在搭建和运行GPU加速的Spark环境时你可能会遇到以下问题问题现象可能原因排查方式解决方案spark-submit报错ClassNotFoundException或NoClassDefFoundErrorRAPIDS插件JAR包未正确加载或版本不兼容。检查spark-submit的--jars参数路径确认JAR包存在。检查Spark、Scala、CUDA、RAPIDS插件版本兼容性矩阵。1. 使用绝对路径指定JAR包。2. 将JAR包放入$SPARK_HOME/jars/目录。3. 访问RAPIDS官网下载与你的环境完全匹配的版本。作业运行但Spark UI显示任务仍在CPU执行GPU配置未生效或操作不被RAPIDS插件支持。1. 查看Driver日志搜索“Gpu”相关日志。2. 检查spark.rapids.sql.enabled是否为true。3. 访问http://localhost:4040/SQL/查看物理计划确认是否有Gpu*算子。1. 确保所有必要的配置项已设置。2. 某些Spark操作如某些UDF、复杂数据类型可能无法下推至GPU这是正常的。参考RAPIDS支持的操作列表。运行GPU作业时出现OutOfMemoryError(GPU)GPU显存不足。使用nvidia-smi命令监控显存使用情况。1. 调整spark.rapids.memory.gpu.pooling.enabled和spark.rapids.memory.gpu.allocFraction。2. 减少单个任务的数据批处理大小spark.rapids.sql.reader.batchSizeRows。3. 考虑使用更强大的GPU或优化数据分区。无法导入cudf或cumlPython环境不正确或cuDF/cuML版本与CUDA不匹配。在Python中执行import cudf; print(cudf.__version__)和import cuml; print(cuml.__version__)。确认CUDA版本nvcc --version。1. 确保在正确的Conda环境中。2. 严格按照RAPIDS官网的安装命令选择与CUDA版本对应的cuDF/cuML版本。Spark作业卡住或运行缓慢数据倾斜、资源配置不当或存在I/O瓶颈。1. 查看Spark UI的Stages页面检查是否有任务长时间运行。2. 检查磁盘I/O和网络如果是分布式。3. 检查CPU/内存使用率。1. 对数据进行重分区或使用salting技术解决倾斜。2. 调整spark.executor.cores、spark.executor.memory。3. 确保数据存储在本地SSD或高性能存储上。7. 最佳实践与工程建议基于当前的技术预览和开源组件实践如果你计划在个人开发中深入使用“RTX Spark”模式以下建议能帮你走得更稳环境隔离是生命线务必使用Conda或Docker隔离Python和Spark环境。不同项目对库版本如TensorFlow、PyTorch、cuDF的要求可能冲突。一个混乱的环境是调试的噩梦。从“小”开始验证不要一开始就用TB级数据测试。先用一个极小的数据集如1万行跑通整个流水线确保代码逻辑、GPU调用、库版本都正确无误。然后逐步放大数据量观察资源使用和性能变化。理解“成本转移”GPU加速并非万能。它将计算瓶颈从CPU转移到了GPU但数据从主机内存到GPU显存的传输PCIe带宽可能成为新的瓶颈。对于需要频繁Shuffle数据混洗的Spark作业要特别关注网络和序列化开销。优化数据格式如使用Parquet/ORC而非CSV和使用GPU Direct Storage如果支持可以缓解此问题。监控与 profiling 是关键熟练使用nvidia-smi、spark.ui、以及像NVIDIA Nsight Systems这样的性能分析工具。你需要清楚地知道在作业执行的每个阶段是CPU在忙、GPU在忙还是在等待I/O。盲目优化往往事倍功半。为生产部署做好准备本地开发环境RTX Spark与生产集群环境必然存在差异。在本地验证算法和流程的正确性后应尽早将代码放入类生产环境如小规模K8s集群或云上Spark集群进行集成测试。关注配置管理、依赖打包如使用spark-submit --py-files或构建Docker镜像和日志收集。关注官方动态RTX Spark作为英伟达RTX AI平台的一部分其正式发布后的安装方式、API和最佳实践可能会与当前开源组件拼装的方式有所不同。密切关注英伟达开发者博客和RAPIDS AI的官方文档获取第一手信息。8. 总结RTX Spark带来的范式转变回顾BW2026上展示的RTX Spark真机其象征意义可能大于当前的实用细节。它清晰地指向了一个趋势高性能计算HPC与AI工作负载正在从云端向边缘端、甚至个人端下沉。对于开发者而言这意味着更快的本地迭代数据预处理、特征工程、模型原型训练这些耗时环节可以在本地GPU上获得数倍甚至数十倍的加速将“等待时间”转化为“思考时间”。更低的学习与试错成本无需申请和配置复杂的云端资源在个人笔记本上就能获得一个与生产环境同构的Spark开发环境降低了大数据和AI技术的入门门槛。更强的数据隐私控制敏感数据可以完全在本地进行处理和建模避免了数据上传云端可能带来的合规风险。当然它并非要取代云端大规模集群。对于PB级数据训练或超大规模推理云端弹性扩展的能力无可替代。RTX Spark的定位是成为云端能力在个人端的延伸和补充是AI开发工作流中“最后一公里”的强力工具。目前要完全复现BW2026上的体验我们仍需手动集成Spark、RAPIDS、CUDA等组件。但可以预见未来英伟达很可能推出一个一键部署的“RTX Spark”工作站软件包或容器镜像将最佳实践和优化配置封装好让开发者开箱即用。作为开发者我们现在要做的不是等待而是主动理解其背后的技术栈Spark, GPU加速, RAPIDS。通过本文的实践你已经拥有了在个人RTX PC上搭建一个“准RTX Spark”环境的能力。这不仅能让你提前熟悉未来的开发模式更能让你深刻理解分布式计算与GPU加速融合的威力。当正式版来临你将是第一批能将其价值最大化的人。