PHP快速入門開源大模型平臺魔塔ModelScope

2024年2月6日 18点热度 0人点赞

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配單