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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用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是否安装成功。若无返回值或报错信息,则表示安装成功。
AI 代码解读

完成后如下图所示则为安装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()
AI 代码解读

然后打开CMD窗口,执行

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

在这里我报错了,检查原因是没有添加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
AI 代码解读

然后进行环境变量验证

echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%
AI 代码解读

image.png

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

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

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

  • 安装成功后,执行语句
    SELECT * FROM test_prefix_source_table;
    
    AI 代码解读

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;
    
    AI 代码解读
    运行成功后如图
    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()
    
    AI 代码解读
  • 运行python文件
    image.png
  • 然后同样在sql editor执行sql语句
    SELECT * FROM tmp_mf_clean_copyright limit 200
    #后面的limit 200 记得加上,如果不加会报错
    
    AI 代码解读

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 
目录
打赏
0
0
1
0
16
分享
相关文章
Python 高级编程与实战:深入理解并发编程与分布式系统
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧、数据科学、机器学习、Web 开发、API 设计、网络编程和异步IO。本文将深入探讨 Python 在并发编程和分布式系统中的应用,并通过实战项目帮助你掌握这些技术。
Python 高级编程与实战:构建分布式系统
本文深入探讨了 Python 中的分布式系统,介绍了 ZeroMQ、Celery 和 Dask 等工具的使用方法,并通过实战项目帮助读者掌握这些技术。ZeroMQ 是高性能异步消息库,支持多种通信模式;Celery 是分布式任务队列,支持异步任务执行;Dask 是并行计算库,适用于大规模数据处理。文章结合具体代码示例,帮助读者理解如何使用这些工具构建分布式系统。
Pandas高级数据处理:分布式计算
随着数据量增长,传统的Pandas单机处理难以应对大规模数据。Dask作为Pandas的补充,支持分布式计算,能处理更大数据集并提高效率。本文介绍Dask在数据加载、类型推断和分区管理中的常见问题及解决方法,如使用`dask.dataframe.read_csv()`、指定`dtype`、调整分区数等,并总结了内存溢出、类型不匹配和网络通信失败等报错的解决方案。
93 25
|
1月前
|
云产品评测|分布式Python计算服务MaxFrame获奖名单公布!
云产品评测|分布式Python计算服务MaxFrame获奖名单公布!
【📕分布式锁通关指南 02】基于Redis实现的分布式锁
本文介绍了从单机锁到分布式锁的演变,重点探讨了使用Redis实现分布式锁的方法。分布式锁用于控制分布式系统中多个实例对共享资源的同步访问,需满足互斥性、可重入性、锁超时防死锁和锁释放正确防误删等特性。文章通过具体示例展示了如何利用Redis的`setnx`命令实现加锁,并分析了简化版分布式锁存在的问题,如锁超时和误删。为了解决这些问题,文中提出了设置锁过期时间和在解锁前验证持有锁的线程身份的优化方案。最后指出,尽管当前设计已解决部分问题,但仍存在进一步优化的空间,将在后续章节继续探讨。
480 131
【📕分布式锁通关指南 02】基于Redis实现的分布式锁
|
1月前
|
Springboot使用Redis实现分布式锁
通过这些步骤和示例,您可以系统地了解如何在Spring Boot中使用Redis实现分布式锁,并在实际项目中应用。希望这些内容对您的学习和工作有所帮助。
176 83
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁如何实现 ?
Redis分布式锁主要依靠一个SETNX指令实现的 , 这条命令的含义就是“SET if Not Exists”,即不存在的时候才会设置值。 只有在key不存在的情况下,将键key的值设置为value。如果key已经存在,则SETNX命令不做任何操作。 这个命令的返回值如下。 ● 命令在设置成功时返回1。 ● 命令在设置失败时返回0。 假设此时有线程A和线程B同时访问临界区代码,假设线程A首先执行了SETNX命令,并返回结果1,继续向下执行。而此时线程B再次执行SETNX命令时,返回的结果为0,则线程B不能继续向下执行。只有当线程A执行DELETE命令将设置的锁状态删除时,线程B才会成功执行S
【📕分布式锁通关指南 03】通过Lua脚本保证redis操作的原子性
本文介绍了如何通过Lua脚本在Redis中实现分布式锁的原子性操作,避免并发问题。首先讲解了Lua脚本的基本概念及其在Redis中的使用方法,包括通过`eval`指令执行Lua脚本和通过`script load`指令缓存脚本。接着详细展示了如何用Lua脚本实现加锁、解锁及可重入锁的功能,确保同一线程可以多次获取锁而不发生死锁。最后,通过代码示例演示了如何在实际业务中调用这些Lua脚本,确保锁操作的原子性和安全性。
62 6
【📕分布式锁通关指南 03】通过Lua脚本保证redis操作的原子性
Redis,分布式缓存演化之路
本文介绍了基于Redis的分布式缓存演化,探讨了分布式锁和缓存一致性问题及其解决方案。首先分析了本地缓存和分布式缓存的区别与优劣,接着深入讲解了分布式远程缓存带来的并发、缓存失效(穿透、雪崩、击穿)等问题及应对策略。文章还详细描述了如何使用Redis实现分布式锁,确保高并发场景下的数据一致性和系统稳定性。最后,通过双写模式和失效模式讨论了缓存一致性问题,并提出了多种解决方案,如引入Canal中间件等。希望这些内容能为读者在设计分布式缓存系统时提供有价值的参考。感谢您的阅读!
134 6
Redis,分布式缓存演化之路

热门文章

最新文章