PHP快速入门开源大模型平台魔塔ModelScope

PHP技术
67
0
0
2024-05-07

ModelScope 是什么?

ModelScope 旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

我们希望在汇集行业领先的预训练模型,减少开发者的重复研发成本,提供更加绿色环保、开源开放的AI开发环境和模型服务,助力绿色“数字经济”事业的建设。 ModelScope平台将以开源的方式提供多类优质模型,开发者可在平台上免费体验与下载使用。

环境安装

环境配置

  • 操作系统:Linux
  • 多环境切换:Anaconda
  • Python版本:3.10
  • 深度学习框架:Pytorch
  • 计算平台:CPU

Anaconda 安装

Anaconda 是一个开源的Anaconda是专注于数据分析的Python发行版本,包含了conda、Python等190多个科学包及其依赖项。

Anaconda 就是可以便捷获取包且对包能够进行管理,包括了python和很多常见的软件库和一个包管理器conda。常见的科学计算类的库都包含在里面了,使得安装比常规 python 安装要容易,同时对环境可以统一管理的发行版本。

下载地址:https://www.anaconda.com/download#downloads
wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh
命令行中切换到anaconda文件所在目录。默认安装路径,/home/{用户名}/anaconda3
sh Anaconda3-2022.05-Linux-x86_64.sh

accept the license terms--yes
查看 anaconda 版本。终端输入conda --version 或者conda -V
$ conda --version

conda 23.11.0

创建Python环境

创建新环境
语法:conda create -n your_env_name python=X.X
conda create -n tinywan-modelscope python=3.10
激活环境
conda activate tinywan-modelscope
其他conda命令
# 查看环境列表
conda env list

# 安装包。如:conda install numpy
conda install [package]

# 删除当前环境中的某个包
conda remove [package] 

# 退出当前虚拟环境
source deactivate  # Linux环境
conda deactivate # Windows环境

# 删除某个虚拟环境
conda remove -n your_env_name --all

安装深度学习框架 Pytorch

pip3 install torch torchvision torchaudio
安装过程

安装成功
Successfully installed MarkupSafe-2.1.3 certifi-2023.11.17 
charset-normalizer-3.3.2 filelock-3.13.1 
fsspec-2023.12.2 idna-3.6 jinja2-3.1.3 
mpmath-1.3.0 networkx-3.1 numpy-1.24.4 
nvidia-cublas-cu12-12.1.3.1 
nvidia-cuda-cupti-cu12-12.1.105 
nvidia-cuda-nvrtc-cu12-12.1.105 nvidia-cuda-runtime-cu12-12.1.105 nvidia-cudnn-cu12-8.9.2.26 nvidia-cufft-cu12-11.0.2.54 nvidia-curand-cu12-10.3.2.106 nvidia-cusolver-cu12-11.4.5.107 nvidia-cusparse-cu12-12.1.0.106 nvidia-nccl-cu12-2.18.1 nvidia-nvjitlink-cu12-12.3.101 nvidia-nvtx-cu12-12.1.105 pillow-10.2.0 requests-2.31.0 
sympy-1.12 torch-2.1.2 torchaudio-2.1.2 torchvision-0.16.2 
triton-2.1.0 typing-extensions-4.9.0 urllib3-2.1.0

安装 ModelScope Library 库

ModelScope Libarary由核心框架,以及不同领域模型的对接组件组成。如果只需要ModelScope模型和数据集访问等基础能力,可以只安装ModelScope的核心框架:

pip3 install modelscope

但如果需要进一步具体使用ModelScope平台上承载的,包括多模态,NLP,CV,语音等不同领域的模型,来进行模型推理以及模型训练、微调等能力,则需要安装各个领域上不同的依赖。例如:

如仅需体验多模态领域的模型,可执行如下命令安装领域依赖:
pip install "modelscope[multi-modal]" 

下载自然语言处理模型 NLP

pip3 install "modelscope[nlp]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html

安装验证

安装成功后,即可使用对应领域模型进行推理,训练等操作。这里我们以NLP领域为例。安装后,可执行如下命令,运行中文分词任务,来验证安装是否正确:

python -c "from modelscope.pipelines import pipeline;print(pipeline('word-segmentation')('今天天气不错,适合 出去游玩。开源技术小栈'))"
执行输入内容

编写一个python脚本modelscope.py。直接执行python modelscope.py结果和上面一样

modelscope.py 脚本

from modelscope.pipelines import pipeline
print(pipeline('word-segmentation')('今天天气不错,适合 出去游玩。开源技术小栈'))

PHP 通过 PHPY 调用魔塔库

PHPY 是识沃团队最新推出的开源项目,目标是为 PHP 引入 Python 生态,来弥补 PHP 生态的空缺和不足。phpy 使得 PHP 可以调用所有 Python 的包。
入门级教程:PHPY 打破语言界限,使PHP引入Python生态,开创PHP语言AI编程时代!

模型推理

在安装完成ModelScope之后即可使用ocr-recognition的能力。

代码范例 captcha.php 代码

<?php
/**
 * @link https://modelscope.cn/models/damo/cv_convnextTiny_ocr-recognition-general_damo/summary
 */
$pipeline = PyCore::import('modelscope.pipelines')->pipeline;
$Tasks = PyCore::import('modelscope.utils.constant')->Tasks;
// 模型可以换成 xiaolv/ocr_small
$pipe = $pipeline($Tasks->ocr_recognition, model: 'damo/cv_convnextTiny_ocr-recognition-general_damo');
$file = '/tmp/captcha.png';
file_put_contents($file, file_get_contents('https://business.swoole.com/page/captcha_register'));
echo '识别结果:' . $pipe($file)['text'][0], PHP_EOL;
官方案例:https://github.com/swoole/phpy/blob/main/examples/modelscope/captcha.php

模型介绍

  • 文字识别,即给定一张文本图片,识别出图中所含文字并输出对应字符串。
  • 本模型主要包括三个主要部分
  • Convolutional Backbone提取图像视觉特征
  • ConvTransformer Blocks用于对视觉特征进行上下文建模
  • 连接CTC loss进行识别解码以及网络梯度优化。
识别模型结构如下图:

依赖包

该模型依赖于opencv library。所以先需要再虚拟环境安装opencv库。

OpenCV(Open Source Computer Vision Library)库是一种计算机视觉的开源函数库,内置众多图像处理函数以及数百种计算机视觉算法并对它们进行了很大程度的优化,通过调用OpenCV库函数可加快程序开发的进度,快速实现程序所需图像处理等相关功能。
pip install opencv-python

安装过程

Collecting opencv-python
  Downloading https://mirrors.cloud.aliyuncs.com/pypi/packages/d9/64/7fdfb9386511cd6805451e012c537073a79a958a58795c4e602e538c388c/opencv_python-4.9.0.80-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (62.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.2/62.2 MB 50.5 MB/s eta 0:00:00
Requirement already satisfied: numpy>=1.21.2 in /home/www/anaconda3/envs/tinywan-modelscope/lib/python3.10/site-packages (from opencv-python) (1.26.3)
Installing collected packages: opencv-python
Successfully installed opencv-python-4.9.0.80

运行脚本

/usr/local/php-8.2.14/bin/php captcha.php

识别结果:7R2N

使用官方案例 url

http://duguang-labelling.oss-cn-shanghai.aliyuncs.com/mass_img_tmp_20220922/ocr_recognition.jpg

模型可视化效果

执行结果。输出:电子元器件提供BOM配单
(tinywan-modelscope) $ /usr/local/php-8.2.14/bin/php captcha.php 
2024-01-19 22:41:20,505 - modelscope - INFO - PyTorch version 2.1.2 Found.
2024-01-19 22:41:20,506 - modelscope - INFO - Loading ast index from /home/www/.cache/modelscope/ast_indexer
2024-01-19 22:41:20,596 - modelscope - INFO - Loading done! Current index file version is 1.11.0, with md5 fbfcef7834c830c39b620d603ee9aa45 and a total number of 953 components indexed
2024-01-19 22:41:22,219 - modelscope - WARNING - Model revision not specified, use revision: v2.4.0
2024-01-19 22:41:22,537 - modelscope - INFO - initiate model from /home/www/.cache/modelscope/hub/damo/cv_convnextTiny_ocr-recognition-general_damo
2024-01-19 22:41:22,537 - modelscope - INFO - initiate model from location /home/www/.cache/modelscope/hub/damo/cv_convnextTiny_ocr-recognition-general_damo.
2024-01-19 22:41:22,538 - modelscope - INFO - initialize model from /home/www/.cache/modelscope/hub/damo/cv_convnextTiny_ocr-recognition-general_damo
2024-01-19 22:41:22,833 - modelscope - INFO - cuda is not available, using cpu instead.
2024-01-19 22:41:22,833 - modelscope - INFO - loading model from dir /home/www/.cache/modelscope/hub/damo/cv_convnextTiny_ocr-recognition-general_damo
2024-01-19 22:41:22,837 - modelscope - INFO - loading model done
识别结果:电子元器件提供BOM配单