概述
MaxFrame 是一款专为高性能数据处理和机器学习任务设计的产品,它提供了丰富的功能集和直观的用户界面,旨在简化从数据准备到模型部署的整个工作流程。本文将基于个人使用经验对MaxFrame进行全面的技术评测,并针对其Python编程接口、算子支持、产品使用门槛以及其他功能集成等方面进行详细分析。
一.评测体验流程:
这里我主要体验的是:基于MaxFrame实现大语言模型数据处理。下面一起看下整體的流程:
1.数据准备
本文以开源项目RedPajama在GitHub中的少量(一万+)数据为例,为您介绍如何使用MaxFrame对GitHub代码数据进行清洗和处理。
为便于使用,数据已被提前存放在MaxCompute公开项目BIGDATA_PUBLIC_DATASET下的data_science Schema中,您可直接进行使用,表名为llm_redpajama_github_demo_data。部分数据如下:
2.使用MaxFrame对数据进行“版权信息去除”:
对原始数据进行分析,若其中含有“Copyright”等版权信息,需要对该类敏感信息进行去除。
例如:repo_name值为“menuka94/cdnjs”时,对应的content字段中含有“Copyright”等版权信息。
a.创建MaxCompute入口类。
import os
import time
import numpy as np
import maxframe.dataframe as md
from odps import ODPS
from maxframe import new_session
# from maxframe.udf import with_resource_libraries
from maxframe.config import options
from maxframe import config
o = ODPS(
# 确保 ALIBABA_CLOUD_ACCESS_KEY_ID 环境变量设置为用户 Access Key ID,
# ALIBABA_CLOUD_ACCESS_KEY_SECRET 环境变量设置为用户 Access Key Secret,
# 不建议直接使用AccessKey ID和 AccessKey Secret字符串。
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
project='your-default-project',
endpoint='your-end-point',
)
参数说明:
ALIBABA_CLOUD_ACCESS_KEY_ID:需将该环境变量设置为具备目标MaxCompute项目中待操作对象相关MaxCompute权限的AccessKey ID。您可以进入AccessKey管理页面获取AccessKey ID。
ALIBABA_CLOUD_ACCESS_KEY_SECRET:需将该环境变量设置为AccessKey ID对应的AccessKey Secret。
your-default-project:使用的MaxCompute项目名称。您可以登录MaxCompute控制台,在左侧导航栏选择工作区>项目管理,查看MaxCompute项目名称。
your-end-point:目标MaxCompute项目所在地域的Endpoint,可根据网络连接方式自行选择,例如http://service.cn-chengdu.maxcompute.aliyun.com/api。详情请参见Endpoint。
b.引用MaxCompute内置镜像common,其中包含Python环境及本次数据处理所需的regex等第三方包。
config.options.sql.settings = {
"odps.session.image": "common"
}
c.通过UDF构建数据处理逻辑。
def clean_copyright(row):
import re
pat = re.compile('/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/')
cpat = re.compile('copyright', re.IGNORECASE)
text = row['content']
if not text:
return row
r = pat.search(text)
if r:
span = r.span()
sub = text[span[0]:span[1]]
if cpat.search(sub):
# cut it
text = text[:span[0]] + text[span[1]:]
row['content'] = text
return row
lines = text.split('\n')
skip = 0
for k in range(len(lines)):
if (lines[k].startswith('//') or lines[k].startswith('#')
or lines[k].startswith('--') or not lines[k]):
skip = skip + 1
else:
break
if skip:
text = '\n'.join(lines[skip:])
row['content'] = text
return row
d.创建MaxFrame Session,提交作业至MaxCompute。
def maxframe_job():
s_time = time.time()
table_name = 'bigdata_public_dataset.data_science.llm_redpajama_github_demo_data'
session = new_session(o)
print('session id: ', session.session_id)
df = md.read_odps_table(table_name, index_col='id')
df = df.apply(
clean_copyright,
axis=1, # row
output_type="dataframe",
)
out_table = 'tmp_mf_clean_copyright'
md.to_odps_table(df, out_table).execute()
session.destroy()
maxframe_job()
3.数据处理结果
查询tmp_mf_clean_copyright表,对之前含有“Copyright”等版权信息的数据进行查看,已去除敏感信息。
SELECT * FROM tmp_mf_clean_copyright;
部分返回结果如下:
MaxCompute已与阿里云人工智能平台PAI成功对接,您可基于PAI Desinger进行更多LLM算子的开发和使用
二.个人体验说明:
1. 产品开通与购买体验
在初次接触MaxFrame时,我通过阿里云官网进行了产品的开通与试用申请。整个过程相对顺畅,但也有几点可以改进之处:
注册与登录:首次访问时需要完成账号创建或登录操作,建议提供更加便捷的身份验证方式(如短信验证码即时登录),以减少新用户的入门障碍。
文档引导:虽然官方提供了详细的文档说明,但对于初学者来说,可能还需要更直观的操作指南或视频教程来帮助理解各个步骤。例如,在开通服务后立即弹出一个简短的欢迎页面,介绍如何开始使用MaxFrame。
价格透明度:在选择套餐时,费用结构有时不够清晰,特别是对于那些不确定自己需求的新用户而言。增加一些预估成本计算器或者推荐适合不同场景的套餐选项可能会更有助于决策。
2. Python 编程接口及算子支持
MaxFrame 提供了强大的Python SDK,使得开发者能够轻松地将数据处理逻辑嵌入到自己的应用程序中。以下是一些具体评价:
API 设计:API的设计非常合理,遵循了Pythonic的方式,易于上手。代码示例如下:
from maxframe import MaxFrameClient # 初始化客户端 client = MaxFrameClient(api_key='your_api_key') # 加载数据集 dataset = client.load_dataset('path/to/your/dataset.csv') # 应用预处理算子 processed_data = dataset.apply_operator('normalize', columns=['age', 'income']) # 训练模型 model = client.train_model(processed_data, algorithm='random_forest') # 预测新数据 predictions = model.predict(new_data)
算子丰富度:内置了大量的常用算子,涵盖了数据清洗、特征工程等多个方面。不过,在某些特定领域(如时间序列分析)可能还需要进一步扩展。
性能表现:得益于高效的分布式计算架构,即使面对大规模数据集也能保持良好的响应速度。然而,当涉及到复杂的多步转换时,仍有可能遇到内存溢出的问题,这取决于集群配置和个人环境。
3. 产品使用门槛与其他功能集成
总体来说,MaxFrame 的使用门槛较低,尤其适合有一定编程基础和技术背景的专业人士。此外,它还很好地与其他阿里云服务进行了整合,比如OSS存储、函数计算等,形成了完整的解决方案链路。
易用性:图形化界面友好且直观,无论是拖拽式的数据流构建还是参数调整都非常方便。对于非技术人员,也可以快速掌握基本操作。
社区支持:拥有活跃的开发者社区和技术论坛,遇到问题时可以获得及时的帮助和支持。同时,定期更新的技术博客也提供了许多实用技巧和最佳实践案例。
4. AI 数据处理与Pandas 处理场景下的改进建议
尽管MaxFrame 在AI数据处理方面已经做得相当出色,但在以下几个方面仍有提升空间:
增强交互式探索能力:对于数据分析人员来说,能够在不编写大量代码的情况下对数据进行可视化探索非常重要。因此,引入更多类似Jupyter Notebook的交互式环境将是加分项。
深度集成Pandas生态:考虑到很多用户习惯使用Pandas进行初步的数据整理,如果能实现无缝对接,允许直接读取DataFrame对象并应用MaxFrame算子,将会大大提高工作效率。
优化大文件处理效率:针对超大型CSV或Parquet文件,现有的加载机制有时会显得吃力。探索更高效的分块读取策略,确保资源的有效利用。
加强安全性和隐私保护:随着数据法规日益严格,确保用户数据的安全性和隐私至关重要。进一步强化加密传输、访问控制等功能,让用户放心使用。
结论
MaxFrame是一款功能强大且易于使用的AI开发平台,特别是在Python编程接口、算子支持以及与其他阿里云服务的集成方面表现出色。尽管在某些细节上有待完善,但它无疑为开发者提供了一个理想的工具包,用于加速数据驱动型项目的落地实施。未来,若能在上述提到的几个方向继续发力,相信MaxFrame将赢得更多用户的青睐。