云产品评测|分布式Python计算服务MaxFrame | 在本地环境中使用MaxFrame + 基于MaxFrame实现大语言模型数据处理

本文涉及的产品
性能测试 PTS,5000VUM额度
云原生网关 MSE Higress,422元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用MaxFrame & 基于MaxFrame实现大语言模型数据处理,对步骤有详细说明。体验下来对MaxCompute的感受是很不错的,值得尝试并使用!

简要概述:

MaxCompute是一种云原生类大数据解决方案技术,本人在官方提供的产品文档的基础上,对于该产品进行了两部分的测试;包含在本地环境使用maxframe和基于maxframe实现大模型语言处理。通过这俩部分的实践操作,我相信可以更深度理解该技术所带给我们的技术和优势。

在正式开始实践之前,建议熟悉下阿里云官方文档,这对于我们熟悉概念与相关技术内容有很大帮助
云原生大数据计算服务 MaxCompute

第一部分:在本地环境中使用MaxFrame

该部分内容主要为了先理解安装步骤,在正式使用之前,我们得有一个正确的配置环境,这也是为了第二步模拟实践作为铺垫
附上官网详情说明链接 在本地环境使用MaxFrame

  • 通过Python官网安装相对应的版本,我这里安装的是3.11.4版
    image.png
    • 接着执行以下命令
pip install --upgrade maxframe  
#通过pip命令安装MaxFrame客户端。

python -c "import maxframe.dataframe as md" 
#命令检查MaxFrame是否安装成功。若无返回值或报错信息,则表示安装成功。

完成后如下图所示则为安装Python成功
image.png

  • 在MaxCompute创建自己的项目
    image.png

    这里的项目名称后面会用到 记住自己的项目名称

  • 获取AccessKey ID 和 AccessKey Secret
    在访问控制页面获取 RAM访问控制

    AK SK 只能查看一次,记得保存下来,这两个参数也会在后面用到

  • 获取endpoint
    image.png
    在左边功能栏的endpoint管理可以获取到

    这里的endpoint后面也会使用到

经过前面四个步骤,我们已经获取到了 项目名称、AK、SK、EndPoint 四个参数,接下来就可以进行实践操作了!

1, 在本地创建一个.py后缀的文件,写入并运行以下代码

import os
import maxframe.dataframe as md
from odps import ODPS
from maxframe import new_session

# 创建MaxCompute入口
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',
)
table = o.create_table("test_source_table", "a string, b bigint", if_not_exists=True)
with table.open_writer() as writer:
    writer.write([
        ["value1", 0],
        ["value2", 1],
    ])

# 创建MaxFrame session
session = new_session(o)

df = md.read_odps_table("test_source_table",index_col="b")
df["a"] = "prefix_" + df["a"]

# 打印dataframe数据
print(df.execute().fetch())

# MaxFrame DataFrame数据写入MaxCompute表
md.to_odps_table(df, "test_prefix_source_table").execute()

# 销毁 maxframe session
session.destroy()

然后打开CMD窗口,执行

python C:\Users\Lenovo\Desktop\test.py 
      # 这里要输入你创建Python文件的路径

在这里我报错了,检查原因是没有添加AK,SK的环境变量;
image.png

在CMD窗口输入配置环境变量,输入你对应的AK SK

set ALIBABA_CLOUD_ACCESS_KEY_ID=your-access-id
set ALIBABA_CLOUD_ACCESS_KEY_SECRET=your-secret-access-key

然后进行环境变量验证

echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%

image.png

有出现自己的AK,SK之后,这就表示配置完成了。

接着执行后如下图,成功运行:
image.png

2,通过IDEA安装 MaxCompute studio
具体步骤可以参考官网教程,这里就不过多赘述
安装MaxCompute Studio

  • 安装成功后,执行语句
    SELECT * FROM test_prefix_source_table;
    

image.png

至此,第一部分本地安装使用MaxFrame操作已完成。

第二部分:基于MaxFrame实现大语言模型数据处理

第一部分我们已经在本地完成了操作实践,对于相关的环境和操作步骤有了熟悉的了解。第二部分主要操作是为了进一步体验该产品,运用到实际运用中
同样,在开始操作之前需要提前阅读下官方操作文档
①操作步骤指导
基于MaxFrame实现大语言模型数据处理
②根据概述了解schema名称,这对后面操作也有一定的帮助。
公开数据集概述

  1. 在第一部分的项目sql editor中执行以下语句
    --开启Session级Schema语法
    set odps.namespace.schema=true;
    --查询表llm_redpajama_github_demo_data中的200条数据
    select * from bigdata_public_dataset.data_science.llm_redpajama_github_demo_data limit 200;
    
    运行成功后如图
    image.png
  2. 创建一个.py结尾的文件,然后输入以下代码执行

    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='aliyuntest115',
     endpoint='https://service.cn-shanghai.maxcompute.aliyun.com/api',
    )
    
    config.options.sql.settings = {
         
     "odps.session.image": "common"
    }
    
    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
    
    def maxframe_job():
     s_time = time.time()
     table_name = 'bigdata_public_dataset.data_science.llm_redpajama_githu 
    b_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()
    
  • 运行python文件
    image.png
  • 然后同样在sql editor执行sql语句
    SELECT * FROM tmp_mf_clean_copyright limit 200
    #后面的limit 200 记得加上,如果不加会报错
    

image.png

如图可以看到,相关的敏感信息已经祛除,那么我们这次实践就成功完成了~

体验感受

  1. 做了两个实操,给我的整体感受就是阿里云的产品以及文档做的很详细很详细!对于每个步骤已经注意的事项都有相关的描述和说明,即使完全没啥经验的小白,也可以轻松上手操作。
  2. 再就是分布式Python计算服务MaxFrame,通过部署和项目实操,也算是比较深度的体验吧。
    一是费用完全不用担心,按量付费,这比较省心,了解自己的业务量就大概清楚需要多少成本。
    二是方便&便捷,使用方式是简单易懂的;当然我本次只用来本地环境来搭建,后续会尝试换一个平台来搭建体验一下~
    总体来说,如果之前没有使用过MaxCompute,这次试用很值得体验一次!
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
21天前
|
分布式计算 DataWorks 数据处理
产品测评 | 上手分布式Python计算服务MaxFrame产品最佳实践
MaxFrame是阿里云自研的分布式计算框架,专为大数据处理设计,提供高效便捷的Python开发体验。其主要功能包括Python编程接口、直接利用MaxCompute资源、与MaxCompute Notebook集成及镜像管理功能。本文基于MaxFrame最佳实践,详细介绍了在DataWorks中使用MaxFrame创建数据源、PyODPS节点和MaxFrame会话的过程,并展示了如何通过MaxFrame实现分布式Pandas处理和大语言模型数据处理。测评反馈指出,虽然MaxFrame具备强大的数据处理能力,但在文档细节和新手友好性方面仍有改进空间。
|
17天前
|
人工智能 分布式计算 大数据
MaxFrame 产品评测:大数据与AI融合的Python分布式计算框架
MaxFrame是阿里云MaxCompute推出的自研Python分布式计算框架,支持大规模数据处理与AI应用。它提供类似Pandas的API,简化开发流程,并兼容多种机器学习库,加速模型训练前的数据准备。MaxFrame融合大数据和AI,提升效率、促进协作、增强创新能力。尽管初次配置稍显复杂,但其强大的功能集、性能优化及开放性使其成为现代企业与研究机构的理想选择。未来有望进一步简化使用门槛并加强社区建设。
50 7
|
24天前
|
SQL 分布式计算 DataWorks
MaxCompute MaxFrame评测 | 分布式Python计算服务MaxFrame(完整操作版)
在当今数字化迅猛发展的时代,数据信息的保存与分析对企业决策至关重要。MaxCompute MaxFrame是阿里云自研的分布式计算框架,支持Python编程接口、兼容Pandas接口并自动进行分布式计算。通过MaxCompute的海量计算资源,企业可以进行大规模数据处理、可视化数据分析及科学计算等任务。本文将详细介绍如何开通MaxCompute和DataWorks服务,并使用MaxFrame进行数据操作。包括创建项目、绑定数据源、编写PyODPS 3节点代码以及执行SQL查询等内容。最后,针对使用过程中遇到的问题提出反馈建议,帮助用户更好地理解和使用MaxFrame。
|
4月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
6月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
160 2
基于Redis的高可用分布式锁——RedLock
|
6月前
|
缓存 NoSQL Java
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】
这篇文章是关于如何在SpringBoot应用中整合Redis并处理分布式场景下的缓存问题,包括缓存穿透、缓存雪崩和缓存击穿。文章详细讨论了在分布式情况下如何添加分布式锁来解决缓存击穿问题,提供了加锁和解锁的实现过程,并展示了使用JMeter进行压力测试来验证锁机制有效性的方法。
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】
|
2月前
|
存储 NoSQL Java
使用lock4j-redis-template-spring-boot-starter实现redis分布式锁
通过使用 `lock4j-redis-template-spring-boot-starter`,我们可以轻松实现 Redis 分布式锁,从而解决分布式系统中多个实例并发访问共享资源的问题。合理配置和使用分布式锁,可以有效提高系统的稳定性和数据的一致性。希望本文对你在实际项目中使用 Redis 分布式锁有所帮助。
180 5
|
3月前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
95 8
|
3月前
|
NoSQL Redis
Redis分布式锁如何实现 ?
Redis分布式锁通过SETNX指令实现,确保仅在键不存在时设置值。此机制用于控制多个线程对共享资源的访问,避免并发冲突。然而,实际应用中需解决死锁、锁超时、归一化、可重入及阻塞等问题,以确保系统的稳定性和可靠性。解决方案包括设置锁超时、引入Watch Dog机制、使用ThreadLocal绑定加解锁操作、实现计数器支持可重入锁以及采用自旋锁思想处理阻塞请求。
73 16
|
3月前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
60 5