개요
ModelScope 사용자가 플랫폼에서 제공하는 다양한 모델을 빠르고 편리하게 사용할 수 있도록 ModelScope 공식 모델 구현은 물론 이러한 모델의 사용을 포함하는 모든 기능을 갖춘 Python 라이브러리 세트가 제공됩니다. 추론을 위한 모델, 데이터 전처리, 후처리, 효과 평가 및 기타 작업에 필요한 기타 기능과 관련된 코드를 미세 조정하는 동시에 간단하고 사용하기 쉬운 API와 풍부한 사용 예제를 제공합니다. 라이브러리를 호출하면 사용자는 코드 몇 줄만 작성하여 모델 추론, 훈련, 평가 등의 작업을 완료할 수 있으며 이를 기반으로 2차 개발도 빠르게 수행하여 자신만의 혁신적인 아이디어를 실현할 수 있습니다.
현재 도서관에서 제공하는 알고리즘 모델은 이미지, 자연어 처리, 음성, 다중 양식, 과학 등 5가지 주요 AI 분야와 수십 가지 응용 시나리오 작업을 다루고 있습니다. 작업.
딥 러닝 프레임워크
ModelScope 라이브러리는 현재 Pytorch 및 Tensorflow와 같은 딥 러닝 프레임워크를 지원합니다. 앞으로 더 많은 프레임워크가 지속적으로 업데이트되고 확장될 예정이므로 계속 지켜봐 주시기 바랍니다! 모든 공식 모델은 ModelScope 라이브러리를 통해 모델 추론에 사용할 수 있으며 일부 모델은 교육 및 평가에도 라이브러리를 사용할 수 있습니다. 전체 사용법 정보는 해당 모델의 모델 카드를 참조하세요.
모델 추론 파이프라인
모델 추론
딥 러닝에서 추론은 모델이 데이터를 예측하는 프로세스를 의미합니다. ModelScope는 추론을 수행할 때 파이프라인을 사용하여 필요한 작업을 순차적으로 수행합니다. 일반적인 파이프라인에는 일반적으로 데이터 전처리, 모델 순방향 추론, 데이터 후처리의 세 단계가 포함됩니다.
파이프라인 소개
pipeline() 메서드는 ModelScope 프레임워크의 가장 기본적인 사용자 메서드 중 하나이며 다양한 분야에서 모델 추론을 빠르게 수행하는 데 사용할 수 있습니다. 파이프라인() 메서드를 사용하면 사용자는 단 한 줄의 코드로 특정 작업에 대한 모델 추론을 쉽게 완료할 수 있습니다.
pipeline() 메서드는 ModelScope 프레임워크의 가장 기본적인 사용자 메서드 중 하나이며 다양한 분야에서 모델 추론을 빠르게 수행하는 데 사용할 수 있습니다. 파이프라인() 메서드를 사용하면 사용자는 단 한 줄의 코드로 특정 작업에 대한 모델 추론을 쉽게 완료할 수 있습니다.
파이프라인 사용
이 글에서는 파이프라인 방식을 사용하여 추론을 위한 모델을 로드하는 방법을 간략하게 소개합니다. 파이프라인 방식을 통해 사용자는 작업 유형 및 모델 이름을 기반으로 추론을 위해 모델 웨어하우스에서 필요한 모델을 쉽게 가져올 수 있습니다. 이 방법의 가장 큰 장점은 사용하기 쉽고 모델 추론을 빠르고 효율적으로 수행할 수 있다는 것입니다. 파이프라인 방법의 편리성은 사용자가 모델의 특정 세부 사항을 이해할 필요 없이 모델을 획득하고 적용할 수 있는 직접적인 방법을 제공하므로 모델 사용에 대한 임계값을 낮춘다는 것입니다. 파이프라인 방법을 통해 사용자는 문제 해결에 더 집중할 수 있으며
- 환경 준비
- 중요 매개변수
- 파이프라인의 기본 사용법
- 추론을 위한 전처리 및 모델 지정
- 다양한 시나리오에서 추론 작업에 파이프라인을 사용하는 예
파이프라인의 기본 사용법
중국어 단어 분할
파이프라인 기능은 특정 작업 이름 지정, 작업 기본 모델 로드 및 해당 파이프라인 개체 생성을 지원합니다.
Python 코드
1 | from modelscope.pipelines import pipelineword_segmentation = pipeline( 'word-segmentation' )input_str = '开源技术小栈作者是Tinywan,你知道不?' print (word_segmentation(input_str))
|
로그인 후 복사
PHP 코드
1 | <?php $operator = PyCore::import( "operator" ); $builtins = PyCore::import( "builtins" ); $pipeline = PyCore::import( 'modelscope.pipelines' )->pipeline; $word_segmentation = $pipeline ( "word-segmentation" ); $input_str = "开源技术小栈作者是Tinywan,你知道不?" ;PyCore:: print ( $word_segmentation ( $input_str ));
|
로그인 후 복사
온라인 변환 도구: https://www.swoole.com/py2php/
결과 출력
1 | /usr/local/php-8.2.14/bin/php demo.php 2024-03-25 21:41:42,434 - modelscope - INFO - PyTorch version 2.2.1 Found.2024-03-25 21:41:42,434 - modelscope - INFO - Loading ast index from /home/www/.cache/modelscope/ast_indexer2024-03-25 21:41:42,577 - modelscope - INFO - Loading done! Current index file version is 1.13.0, with md5 f54e9d2dceb89a6c989540d66db83a65 and a total number of 972 components indexed2024-03-25 21:41:44,661 - modelscope - WARNING - Model revision not specified, use revision: v1.0.32024-03-25 21:41:44,879 - modelscope - INFO - initiate model from /home/www/.cache/modelscope/hub/damo/nlp_structbert_word-segmentation_chinese-base2024-03-25 21:41:44,879 - modelscope - INFO - initiate model from location /home/www/.cache/modelscope/hub/damo/nlp_structbert_word-segmentation_chinese-base.2024-03-25 21:41:44,880 - modelscope - INFO - initialize model from /home/www/.cache/modelscope/hub/damo/nlp_structbert_word-segmentation_chinese-baseYou are using a model of type bert to instantiate a model of type structbert. This is not supported for all configurations of models and can yield errors.2024-03-25 21:41:48,633 - modelscope - WARNING - No preprocessor field found in cfg.2024-03-25 21:41:48,633 - modelscope - WARNING - No val key and type key found in preprocessor domain of configuration.json file.2024-03-25 21:41:48,633 - modelscope - WARNING - Cannot find available config to build preprocessor at mode inference, current config: { 'model_dir' : '/home/www/.cache/modelscope/hub/damo/nlp_structbert_word-segmentation_chinese-base' }. trying to build by task and model information.2024-03-25 21:41:48,639 - modelscope - INFO - cuda is not available, using cpu instead.2024-03-25 21:41:48,640 - modelscope - WARNING - No preprocessor field found in cfg.2024-03-25 21:41:48,640 - modelscope - WARNING - No val key and type key found in preprocessor domain of configuration.json file.2024-03-25 21:41:48,640 - modelscope - WARNING - Cannot find available config to build preprocessor at mode inference, current config: { 'model_dir' : '/home/www/.cache/modelscope/hub/damo/nlp_structbert_word-segmentation_chinese-base' , 'sequence_length' : 512}. trying to build by task and model information./home/www/anaconda3/envs/tinywan-modelscope/lib/python3.10/site-packages/transformers/modeling_utils.py:962: FutureWarning: The `device` argument is deprecated and will be removed in v5 of Transformers.warnings.warn({ 'output' : [ '开源' , '技术' , '小' , '栈' , '作者' , '是' , 'Tinywan' , ',' , '你' , '知道' , '不' , '?' ]}
|
로그인 후 복사
여러 샘플 입력
파이프라인 개체도 It 여러 샘플 목록을 입력으로 전달하는 것을 지원하고 해당 출력 목록을 반환합니다. 각 요소는 입력 샘플의 반환 결과에 해당합니다. 여러 텍스트 조각에 대한 추론 방법은 입력 데이터가 파이프라인 내부의 반복자를 사용하여 개별적으로 처리된 다음 동일한 반환 목록에 추가된다는 것입니다.
Python code
1 | from modelscope.pipelines import pipelineword_segmentation = pipeline( 'word-segmentation' )inputs =[ '开源技术小栈作者是Tinywan,你知道不?' , 'webman这个框架不错,建议你看看' ] print (word_segmentation(inputs))
|
로그인 후 복사
PHP code
1 | <?php $operator = PyCore::import( "operator" ); $builtins = PyCore::import( "builtins" ); $pipeline = PyCore::import( 'modelscope.pipelines' )->pipeline; $word_segmentation = $pipeline ( "word-segmentation" ); $inputs = new PyList([ "开源技术小栈作者是Tinywan,你知道不?" , "webman这个框架不错,建议你看看" ]);PyCore:: print ( $word_segmentation ( $inputs ));
|
로그인 후 복사
Output
1 | [{ 'output' : [ '开源' , '技术' , '小' , '栈' , '作者' , '是' , 'Tinywan' , ',' , '你' , '知道' , '不' , '?' ]},{ 'output' : [ 'webman' , '这个' , '框架' , '不错' , ',' , '建议' , '你' , '看看' ]}]
|
로그인 후 복사
로그인 후 복사
배치 추론
파이프라인의 배치 추론 지원은 위의 "여러 텍스트 입력"과 유사하지만 차이점은 지정된다는 것입니다. 사용자에 의한 배치 크기 규모에서는 배치 전달 추론이 모델 전달 프로세스에서 구현됩니다.
1 | inputs =[ '今天天气不错,适合出去游玩' , '这本书很好,建议你看看' ]# 指定batch_size参数来支持批量推理 print (word_segmentation(inputs, batch_size=2))# 输出[{ 'output' : [ '今天' , '天气' , '不错' , ',' , '适合' , '出去' , '游玩' ]}, { 'output' : [ '这' , '本' , '书' , '很' , '好' , ',' , '建议' , '你' , '看看' ]}]
|
로그인 후 복사
데이터 세트 입력
1 | from modelscope.msdatasets import MsDatasetfrom modelscope.pipelines import pipelineinputs = [ '今天天气不错,适合出去游玩' , '这本书很好,建议你看看' ]dataset = MsDataset.load(inputs, target= 'sentence' )word_segmentation = pipeline( 'word-segmentation' )outputs = word_segmentation(dataset) for o in outputs: print (o)# 输出{ 'output' : [ '今天' , '天气' , '不错' , ',' , '适合' , '出去' , '游玩' ]}{ 'output' : [ '这' , '本' , '书' , '很' , '好' , ',' , '建议' , '你' , '看看' ]}
|
로그인 후 복사
추론을 위한 전처리 및 모델 지정
파이프라인 기능은 인스턴스화된 전처리 개체 및 모델 개체 전달을 지원하므로 사용자가 전처리 및 모델을 사용자 지정할 수 있습니다.
추론을 위한 모델 객체 생성
Python 코드
1 | from modelscope.models import Modelfrom modelscope.pipelines import pipelinemodel = Model.from_pretrained( 'damo/nlp_structbert_word-segmentation_chinese-base' )word_segmentation = pipeline( 'word-segmentation' , model=model)inputs =[ '开源技术小栈作者是Tinywan,你知道不?' , 'webman这个框架不错,建议你看看' ] print (word_segmentation(inputs))
|
로그인 후 복사
PHP 코드
1 | <?php $operator = PyCore::import( "operator" ); $builtins = PyCore::import( "builtins" ); $Model = PyCore::import( 'modelscope.models' )->Model; $pipeline = PyCore::import( 'modelscope.pipelines' )->pipeline; $model = $Model ->from_pretrained( "damo/nlp_structbert_word-segmentation_chinese-base" ); $word_segmentation = $pipeline ( "word-segmentation" , model: $model ); $inputs = new PyList([ "开源技术小栈作者是Tinywan,你知道不?" , "webman这个框架不错,建议你看看" ]);PyCore:: print ( $word_segmentation ( $inputs ));
|
로그인 후 복사
Output
1 | [{ 'output' : [ '开源' , '技术' , '小' , '栈' , '作者' , '是' , 'Tinywan' , ',' , '你' , '知道' , '不' , '?' ]},{ 'output' : [ 'webman' , '这个' , '框架' , '不错' , ',' , '建议' , '你' , '看看' ]}]
|
로그인 후 복사
로그인 후 복사
추론을 위한 전처리기 및 모델 객체 생성
1 | from modelscope.models import Modelfrom modelscope.pipelines import pipelinefrom modelscope.preprocessors import Preprocessor, TokenClassificationTransformersPreprocessormodel = Model.from_pretrained( 'damo/nlp_structbert_word-segmentation_chinese-base' )tokenizer = Preprocessor.from_pretrained(model.model_dir)# Or call the constructor directly: # tokenizer = TokenClassificationTransformersPreprocessor(model.model_dir)word_segmentation = pipeline( 'word-segmentation' , model=model, preprocessor=tokenizer)inputs =[ '开源技术小栈作者是Tinywan,你知道不?' , 'webman这个框架不错,建议你看看' ] print (word_segmentation(inputs))[{ 'output' : [ '开源' , '技术' , '小' , '栈' , '作者' , '是' , 'Tinywan' , ',' , '你' , '知道' , '不' , '?' ]},{ 'output' : [ 'webman' , '这个' , '框架' , '不错' , ',' , '建议' , '你' , '看看' ]}]
|
로그인 후 복사
이미지
참고:
- OpenCV 라이브러리가 설치되어 있는지 확인하세요. 설치되어 있지 않은 경우 pip
1 | pip install opencv-python
|
로그인 후 복사
를 통해 설치할 수 있습니다.
没有安装会提示:PHP Fatal error: Uncaught PyError: No module named 'cv2' in /home/www/build/ai/demo3.php:4
- 确保你已经安装深度学习框架包TensorFlow库
否则提示modelscope.pipelines.cv.image_matting_pipeline requires the TensorFlow library but it was not found in your environment. Checkout the instructions on the installation page: https://www.tensorflow.org/install and follow the ones that match your environment.。
报错信息表明,你正在尝试使用一个名为 modelscope.pipelines.cv.image_matting_pipeline 的模块,该模块依赖于 TensorFlow 库。然而,该模块无法正常工作,因为缺少必要的 TensorFlow 依赖。
可以使用以下命令安装最新版本的 TensorFlow
图片
人像抠图('portrait-matting')
输入图片
图片
Python 代码
1 | import cv2from modelscope.pipelines import pipelineportrait_matting = pipeline( 'portrait-matting' )result = portrait_matting( 'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/image_matting.png' )cv2.imwrite( 'result.png' , result[ 'output_img' ])
|
로그인 후 복사
PHP 代码 tinywan-images.php
1 | <?php $operator = PyCore::import( "operator" ); $builtins = PyCore::import( "builtins" ); $cv2 = PyCore::import( 'cv2' ); $pipeline = PyCore::import( 'modelscope.pipelines' )->pipeline; $portrait_matting = $pipeline ( "portrait-matting" ); $result = $portrait_matting ( "https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/image_matting.png" ); $cv2 ->imwrite( "tinywan_result.png" , $result ->__getitem__( "output_img" ));
|
로그인 후 복사
加载本地文件图片$result = $portrait_matting("./tinywan.png");
执行结果
1 | /usr/local/php-8.2.14/bin/php tinywan-images.php 2024-03-25 22:17:25,630 - modelscope - INFO - PyTorch version 2.2.1 Found.2024-03-25 22:17:25,631 - modelscope - INFO - TensorFlow version 2.16.1 Found.2024-03-25 22:17:25,631 - modelscope - INFO - Loading ast index from /home/www/.cache/modelscope/ast_indexer2024-03-25 22:17:25,668 - modelscope - INFO - Loading done! Current index file version is 1.13.0, with md5 f54e9d2dceb89a6c989540d66db83a65 and a total number of 972 components indexed2024-03-25 22:17:26,990 - modelscope - WARNING - Model revision not specified, use revision: v1.0.02024-03-25 22:17:27.623085: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round -off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.2024-03-25 22:17:27.678592: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.To enable the following instructions: AVX2 AVX512F AVX512_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.2024-03-25 22:17:28.551510: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT2024-03-25 22:17:29,206 - modelscope - INFO - initiate model from /home/www/.cache/modelscope/hub/damo/cv_unet_image-matting2024-03-25 22:17:29,206 - modelscope - INFO - initiate model from location /home/www/.cache/modelscope/hub/damo/cv_unet_image-matting.2024-03-25 22:17:29,209 - modelscope - WARNING - No preprocessor field found in cfg.2024-03-25 22:17:29,210 - modelscope - WARNING - No val key and type key found in preprocessor domain of configuration.json file.2024-03-25 22:17:29,210 - modelscope - WARNING - Cannot find available config to build preprocessor at mode inference, current config: { 'model_dir' : '/home/www/.cache/modelscope/hub/damo/cv_unet_image-matting' }. trying to build by task and model information.2024-03-25 22:17:29,210 - modelscope - WARNING - Find task: portrait-matting, model type: None. Insufficient information to build preprocessor, skip building preprocessorWARNING:tensorflow:From /home/www/anaconda3/envs/tinywan-modelscope/lib/python3.10/site-packages/modelscope/utils/device.py:60: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.Instructions for updating:Use `tf.config.list_physical_devices( 'GPU' )` instead.2024-03-25 22:17:29,213 - modelscope - INFO - loading model from /home/www/.cache/modelscope/hub/damo/cv_unet_image-matting/tf_graph.pbWARNING:tensorflow:From /home/www/anaconda3/envs/tinywan-modelscope/lib/python3.10/site-packages/modelscope/pipelines/cv/image_matting_pipeline.py:45: FastGFile.__init__ (from tensorflow.python.platform.gfile) is deprecated and will be removed in a future version.Instructions for updating:Use tf.gfile.GFile.2024-03-25 22:17:29,745 - modelscope - INFO - load model done
|
로그인 후 복사
输出图片
图片
위 내용은 세로 컷아웃 추론을 위한 TensorFlow 딥 러닝 프레임워크 모델 추론 파이프라인의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!