(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】テキスト処理方法、装置、システム、デバイス、記憶媒体、及びプログラム
(51)【国際特許分類】
G06F 40/284 20200101AFI20240910BHJP
G06F 40/216 20200101ALI20240910BHJP
【FI】
G06F40/284
G06F40/216
(21)【出願番号】P 2022124589
(22)【出願日】2022-08-04
【審査請求日】2022-08-04
(31)【優先権主張番号】202111505371.1
(32)【優先日】2021-12-10
(33)【優先権主張国・地域又は機関】CN
【前置審査】
(73)【特許権者】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】ツォーユイ チェン
(72)【発明者】
【氏名】ハイフォン ワン
(72)【発明者】
【氏名】ティエン ウー
(72)【発明者】
【氏名】ティエンハイ ユイ
(72)【発明者】
【氏名】イェンチュン マー
(72)【発明者】
【氏名】シアオコアン フー
【審査官】齊藤 貴孝
(56)【参考文献】
【文献】DANGGUO SHAO 他6名,Domain-Specific Chinese Word Segmentation Based on Bi-Directional Long-Short Term Memory Model,IEEE,[online],Vol 7, 2019,2019年02月06日,pp. 12993~13002,[令和5年10月11日検索],インターネット <URL:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8612932>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 40/00-40/58
(57)【特許請求の範囲】
【請求項1】
テキスト処理装置が実行するテキスト処理方法であって、
複数の文字列テキストに対してテキスト処理を行い、各文字列テキストに対応する整数型フォーマットのコンテンツを得ることができる、テキスト処理加速演算子を使用して、第1テキストに対してテキスト処理を行うことと、
前記テキスト処理加速演算子を使用して、テキスト処理後の整数型フォーマットのコンテンツに対して並列加速を行うことと、を含み、
テキスト処理加速演算子を使用して、第1テキストに対してテキスト処理を行うことは、
前記第1テキストに対応する第1テンソルを取得することと、
前記第1テンソルに対して分割を行って、複数の分割結果を得ることと、
マッピング関係に基づいて、各前記分割結果に対してマッピングを行うことと、
マッピング結果を使用して、第2テンソルを生成することであって、前記第1テンソルの各行の文字列のマッピング結果に基づいて、前記第2テンソルの各行の数値を得ることを含む、ことと、を含み、
ここで、前記第1テキストは文字列を含み、前記第1テンソルは文字列テンソルであり、且つ前記第1テンソルはN行の文字列を含み、前記第2テンソルは整数型テンソルであり、前記第2テンソルの各行の数値は前記第1テンソルの各行の文字列と対応関係を有し、且つ前記第2テンソルは前記N行の文字列に対応するN行の整数型フォーマットの数値を含み、Nは正の整数であり、
前記第1テンソルに対して分割を行って、複数の分割結果を得ることとは、
前記第1テンソルに対して文字分割処理を行って、複数の分割文字を得ることと、
前記第1テンソルに対して単語分割処理を行って、複数の分割単語を得ることと、
のうちの少なくとも1つを含み、
前記マッピング関係に基づいて、各前記分割結果に対してマッピングを行うことは、
予め設定された分割文字及び/又は分割単語と整数型フォーマットの数値とのマッピング関係に基づいて、各分割文字を数値にマッピングすることと、
予め設定された分割文字及び/又は分割単語と整数型フォーマットの数値とのマッピング関係に基づいて、各分割単語を数値にマッピングすることと、
のうちの少なくとも1つを含み、
前記テキスト処理加速演算子を使用して、テキスト処理後の整数型フォーマットのコンテンツに対して並列加速を行うことは、
マルチスレッドを使用して、前記第2テンソルに対して並列処理を行うことを含む、
テキスト処理方法。
【請求項2】
前記テキスト処理は、第1言語による実行から第2言語による実行に変換され、
前記第1言語はインタープリタ型言語であり、前記第2言語はコンパイル型言語である、
請求項1に記載のテキスト処理方法。
【請求項3】
前記テキスト処理方法は、
自然言語理解モデルを使用して、前記テキスト処理加速演算子により加速後のコンテンツに対して、自然言語理解処理を行うことをさらに含み、
前記自然言語理解モデルが、前記テキスト処理加速演算子と変換エンコーダ演算子とを含み、ここで、前記変換エンコーダ演算子は、前記テキスト処理加速演算子により加速後のコンテンツに対して文字列エンコードを行うことに用いられ、
前記変換エンコーダ演算子が、融合されたアテンションメカニズム演算子と融合されたフィードフォワード演算子とを含み、ここで、前記融合されたアテンションメカニズム演算子は前記自然言語理解モデルのマルチヘッドアテンションメカニズムにおける汎用行列乗算(GEMM)、オフセット加算(bias add)及び転置(transpose)をそれぞれ融合して得られ、前記融合されたフィードフォワード演算子は前記自然言語理解モデルのFeedforward層におけるカーネル(Kernel)演算子を融合して得られる、
請求項1に記載のテキスト処理方法。
【請求項4】
前記テキスト処理方法は、
前記テキスト処理加速演算子によって使用されるマッピング関係を導出することをさらに含む、
請求項1に記載のテキスト処理方法。
【請求項5】
前記テキスト処理方法は、
導出されたマッピング関係を、バイナリシリアライズ形式で保存することと、
圧縮アルゴリズムを使用して、導出されたシソーラスを圧縮して保存することと、
のうちの少なくとも1つをさらに含む、
請求項
4に記載のテキスト処理方法。
【請求項6】
複数の文字列テキストに対してテキスト処理を行い、各文字列テキストに対応する整数型フォーマットのコンテンツを得ることができる、テキスト処理加速演算子を使用して、第1テキストに対してテキスト処理を行うためのテキスト処理モジュールと、
前記テキスト処理加速演算子を使用して、テキスト処理後の整数型フォーマットのコンテンツに対して並列加速を行うための並列加速モジュールと、を備え、
前記テキスト処理モジュールは、具体的には、
前記第1テキストに対応する第1テンソルを取得することと、
前記第1テンソルに対して分割を行って、複数の分割結果を得ることと、
マッピング関係に基づいて、各前記分割結果に対してマッピングを行うことと、
マッピング結果を使用して、第2テンソルを生成することであって、前記第1テンソルの各行の文字列のマッピング結果に基づいて、前記第2テンソルの各行の数値を得ることを含む、ことと、に用いられ、
ここで、前記第1テキストは文字列を含み、前記第1テンソルは文字列テンソルであり、且つ前記第1テンソルはN行の文字列を含み、前記第2テンソルは整数型テンソルであり、前記第2テンソルの各行の数値は前記第1テンソルの各行の文字列と対応関係を有し、且つ前記第2テンソルは前記N行の文字列に対応するN行の整数型フォーマットの数値を含み、Nは正の整数であり、
前記第1テンソルに対して分割を行って、複数の分割結果を得ることとは、
前記第1テンソルに対して文字分割処理を行って、複数の分割文字を得ることと、
前記第1テンソルに対して単語分割処理を行って、複数の分割単語を得ることと、
のうちの少なくとも1つを含み、
前記マッピング関係に基づいて、各前記分割結果に対してマッピングを行うことは、
予め設定された分割文字及び/又は分割単語と整数型フォーマットの数値とのマッピング関係に基づいて、各分割文字を数値にマッピングすることと、
予め設定された分割文字及び/又は分割単語と整数型フォーマットの数値とのマッピング関係に基づいて、各分割単語を数値にマッピングすることと、
のうちの少なくとも1つを含み、
前記並列加速モジュールは、具体的には、
マルチスレッドを使用して、前記第2テンソルに対して並列処理を行うことに用いられる、
テキスト処理装置。
【請求項7】
複数の文字列テキストに対してテキスト処理を行い、各文字列テキストに対応する整数型フォーマットのコンテンツを得ることができる、テキスト処理加速演算子であって、
第1テキストに対してテキスト処理を行うことであって、
前記第1テキストに対応する第1テンソルを取得することと、
前記第1テンソルに対して分割を行って、複数の分割結果を得ることと、
マッピング関係に基づいて、各前記分割結果に対してマッピングを行うことと、
マッピング結果を使用して、第2テンソルを生成することであって、前記第1テンソルの各行の文字列のマッピング結果に基づいて、前記第2テンソルの各行の数値を得ることを含む、ことと、を含み、
ここで、前記第1テキストは文字列を含み、前記第1テンソルは文字列テンソルであり、且つ前記第1テンソルはN行の文字列を含み、前記第2テンソルは整数型テンソルであり、前記第2テンソルの各行の数値は前記第1テンソルの各行の文字列と対応関係を有し、且つ前記第2テンソルは前記N行の文字列に対応するN行の整数型フォーマットの数値を含み、Nは正の整数であ
り、
前記第1テンソルに対して分割を行って、複数の分割結果を得ることとは、
前記第1テンソルに対して文字分割処理を行って、複数の分割文字を得ることと、
前記第1テンソルに対して単語分割処理を行って、複数の分割単語を得ることと、
のうちの少なくとも1つを含み、
前記マッピング関係に基づいて、各前記分割結果に対してマッピングを行うことは、
予め設定された分割文字及び/又は分割単語と整数型フォーマットの数値とのマッピング関係に基づいて、各分割文字を数値にマッピングすることと、
予め設定された分割文字及び/又は分割単語と整数型フォーマットの数値とのマッピング関係に基づいて、各分割単語を数値にマッピングすることと、
のうちの少なくとも1つを含む、ことと、
テキスト処理後の整数型フォーマットコンテンツに対して並列加速を行うことであって、
マルチスレッドを使用して、前記第2テンソルに対して並列処理を行うことを含む、ことと、
に用いられるテキスト処理加速演算子を備える、
ディープラーニングフレームワークに基づくシステム。
【請求項8】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサと通信接続されるメモリと、を備え、
前記メモリには、前記少なくとも1つのプロセッサで実行可能な命令が記憶され、前記命令は、前記少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、請求項1から請求項
5のいずれか1項に記載のテキスト処理方法を実行させる、
電子デバイス。
【請求項9】
コンピュータに請求項1から請求項
5のいずれか1項に記載のテキスト処理方法を実行させる命令を記憶するための非一時的なコンピュータ可読記憶媒体。
【請求項10】
コンピュータにおいて、プロセッサにより実行されると、請求項1から請求項
5のいずれか1項に記載のテキスト処理方法を実現するためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータ技術分野、特に自然言語処理、ディープラーニング等の人工知能の分野に関する。
【背景技術】
【0002】
自然言語処理(Natural Language Processing、NLP)はディープラーニングフレームワークの応用シーンの一つである。事前学習モデル技術の急速な普及に伴い、自然言語理解と生成との2つの重要なタスクの応用パラダイムが次第に統一され、開発者と業務シーンがその性能と使いやすさに対する要求も次第に向上されてきた。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本開示は、テキスト処理方法、装置、システム、デバイス及び記憶媒体を提供する。
【課題を解決するための手段】
【0004】
本開示の1つの態様では、テキスト処理方法を提供し、該方法は、
テキスト処理加速演算子を使用して、第1テキストに対してテキスト処理を行うことと、
前記テキスト処理加速演算子を使用して、テキスト処理後のコンテンツに対して並列加速を行うことと、を含む。
【0005】
本開示のもう1つの態様では、テキスト処理装置を提供し、該装置は、
テキスト処理加速演算子を使用して、第1テキストに対してテキスト処理を行うためのテキスト処理モジュールと、前記テキスト処理加速演算子を使用して、テキスト処理後のコンテンツに対して並列加速を行うための並列加速モジュールと、を備える。
【0006】
本開示のもう1つの態様では、ディープラーニングフレームワークに基づくシステムを提供し、該システムは、
第1テキストに対してテキスト処理を行い、テキスト処理後のコンテンツに対して並列加速を行うためのテキスト処理加速演算子を備える。
【0007】
本開示のもう1つの様態では、電子デバイスを提供し、該デバイスは、
少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサに通信接続されるメモリと、を備え、前記メモリには、前記少なくとも1つのプロセッサにより実行可能な命令が記憶されており、前記命令は、前記少なくとも1つのプロセッサにより実行されると、本開示の任意の1つ実施例の方法を実行させる。
【0008】
本開示のもう1つの様態では、コンピュータ命令を記憶した非一時的なコンピュータ可読記憶媒体を提供し、前記コンピュータ命令は本開示の任意の1つ実施例の方法を前記コンピュータに実行させることに用いられる。
【0009】
本開示のもう1つの様態では、プログラムを提供し、前記プログラムは、プロセッサにより実行されると、本開示の任意の1つ実施例の方法を実現する。
【0010】
ここに記載された内容は、本開示の実施例のキーポイント又は重要な特徴を記述することを意図せず、また、本開示の範囲を制限することにも用いられないことを理解すべきである。本開示の他の特徴については、下記の明細書を通して理解を促すことができる。
【図面の簡単な説明】
【0011】
【
図1】本開示の一実施例によるテキスト処理方法の流れを示す模式図である。
【
図2】本開示の他の実施例によるテキスト処理方法の流れを示す模式図である。
【
図3】本開示の他の実施例によるテキスト処理方法の流れを示す模式図である。
【
図4】本開示の他の実施例によるテキスト処理方法の流れを示す模式図である。
【
図5】本開示の他の実施例によるテキスト処理方法の流れを示す模式図である。
【
図6】本開示の他の実施例によるテキスト処理方法の流れを示す模式図である。
【
図7】本開示の一実施例によるテキスト処理装置の構成を示す概略図。
【
図8】本開示の他の実施例によるテキスト処理装置の構成を示す概略図。
【
図9】本開示の他の実施例によるテキスト処理装置の構成を示す概略図。
【
図10】本開示の他の実施例によるテキスト処理装置の構成を示す概略図。
【
図11】本開示の一実施例によるディープラーニングフレームワークに基づくシステムの構成を示す概略図。
【
図12】本開示の他の実施例によるディープラーニングフレームワークに基づくシステムの構成を示す概略図。
【
図13】本開示の他の実施例によるディープラーニングフレームワークに基づくシステムの構成を示す概略図。
【
図14】本開示の他の実施例によるディープラーニングフレームワークに基づくシステムの構成を示す概略図。
【
図15】エンド・ツー・エンドのテキスト処理の演算子化の流れを示す模式図である。
【
図16】変換(Transformer)エンコーダ演算子の一例の構成を示す模式図である。
【
図17a】デコーダタイプの生成ネットワークを示す模式図である。
【
図17b】プリフィックス言語モデルタイプの生成ネットワークを示す模式図である。
【
図17c】エンコーダデコーダタイプの生成ネットワークを示す模式図である。
【
図18a】デコード戦略がビームサーチである場合の模式図である。
【
図18b】デコード戦略がサンプリングサーチである場合の模式図である。
【
図19】ディープラーニングフレームワークの理解と生成モデルの組合せ最適化の流れを示す模式図である。
【
図20a】変換(Transformer)エンコーダ演算子の融合の流れを示す模式図である。
【
図20b】変換(Transformer)エンコーダ演算子の融合の流れを示す模式図である。
【
図20c】変換(Transformer)エンコーダ演算子の融合の流れを示す模式図である。
【
図21a】フレームワーク別テキスト処理性能の比較の例を示す図である。
【
図21b】トレーニング速度の向上の例を示す図である。
【
図21d】変換エンコード速度の比較の例を示す図である。
【
図22】本開示の実施例を実施するための例示的な電子デバイスの概略ブロック図である。
【発明を実施するための形態】
【0012】
添付図面は、本方案をより良く理解するためのものであり、本開示を限定するものではない。
【0013】
以下では、本開示の例示的な実施例を、理解を容易にするために本開示の実施例の様々な詳細を含む添付の図面に関連して説明するが、これらは単に例示的なものであると考えるべきである。したがって、当業者は、本開示の範囲及び精神を逸脱することなく、本明細書に記載された実施例に様々な変更及び修正を加えることができることを認識すべきである。同様に、以下の説明では、周知の機能及び構成については、明確化及び簡明化のために説明を省略する。
【0014】
本開示の一実施例によるテキスト処理方法の流れを示す模式図である。該テキスト処理方法は、
S101において、テキスト処理加速演算子を使用して、第1テキストに対してテキスト処理を行うことと、
S102において、前記テキスト処理加速演算子を使用して、テキスト処理後のコンテンツに対して並列加速を行うことと、を含む。
【0015】
具体的に、第1テキストには、処理を継続する必要がある具体的な内容、例えば、1つ以上の文字列テキスト(String Text)が含まれていてもよい。テキスト加速処理演算子、例えば、加速単語分割器演算子(FasterTokenizerOperator)は、複数の文字列テキストに対して一連のテキスト処理を行い、各文字列テキストに対応する整数型(Integer)フォーマットの内容を得ることができる。そして、テキスト加速処理演算子は、テキスト処理後の整数型フォーマットの内容に対して並行加速を行うこともできる。このように、テキスト加速処理演算子を通してテキスト処理と並列加速を行うことで、テキスト処理速度を向上させることができる。
【0016】
図2は、本開示の他の実施例によるテキスト処理方法の流れを示す模式図である。本実施例のテキスト処理方法は、上述した方法の実施例の1つ又は複数の特徴を含むことができる。1つの実施形態において、S101において、テキスト処理加速演算子を使用して、第1テキストに対してテキスト処理を行うことは、
S201において、前記第1テキストに対応する第1テンソルを取得することと、
S202において、前記第1テンソルに対して分割を行って、複数の分割結果を得ることと、
S203において、各前記分割結果に対して識別子マッピングを行うことと、
S204において、マッピング結果を使用して、第2テンソルを生成することと、を含む。
【0017】
例示的に、第1テンソル演算子を通して第1テキストのテンソル表現を取得し、第1テキストを第1テンソルに変換することができる。テンソルはニューラルネットワークにおけるデータ構造の1つであり、多次元配列や行列などに類似したデータコンテナと理解することができる。第1テンソルは、文字列テンソルを含むことができ、文字列テンソルは、第1テキストにおける1つ以上の文字列テキスト(文字列と略称することができる)を含むことができる。例えば、第1テンソルには、第1テキストから分割したN行の文字列が含まれていてもよい。分割演算子により第1テンソルに対して分割を行うことができ、第1テンソルにおける文字列に対して分割を行うことを含むことができる。そして、マッピング演算子により分割結果をそれぞれマッピングした後、第2テンソル演算子によりマッピング結果に基づき第2テンソルを得ることができる。第2テンソルには、N行の文字列に対応するN行の整数型フォーマットの数値を含めることができる。本開示の実施例では、第1テンソルによりテキストに対して順序付けすることができ、処理結果の正確性を向上させるのに有利であり、テキスト処理プロセスを演算子化することによって処理速度を向上させるのに有利である。
【0018】
1つの実施形態において、S202において、前記第1テンソルに対して分割を行って、複数の分割結果を得ることは、
前記第1テンソルに対して文字分割処理を行って、複数の分割文字を得ることと、
前記第1テンソルに対して単語分割処理を行って、複数の分割単語を得ることと、を含む。
【0019】
例えば、分割文字演算子により第1テンソルにおけるある文字列「今日は空気がいい」を文字分割処理し、この文字列の複数の分割文字「今」、「日」、「は」、「空」、「気」、「が」、「い」、「い」を得る。
【0020】
また、分割単語演算子により第1テンソルにおける文字列「一緒に旅行に行く」を単語分割処理し、この文字列の複数の分割単語「一緒に」、「行く」、「旅行」を得る。
【0021】
本開示の実施例では、具体的に文字分割を行うのか、単語分割を行うのか、又は文字分割と単語分割の両方を行うのかは、実際の応用シーンのニーズに応じて処理することができ、これに対して限定を行わない。本開示の実施例では、第1テンソルに対して文字分割及び/又は単語分割処理を行うことにより、より多くのテキスト処理シーンに柔軟に適応することが有利である。
【0022】
1つの実施形態において、S203において、各前記分割結果に対して識別子マッピングを行うことは、マッピング関係に基づいて、各分割文字及び/又は分割単語を数値にマッピングすることを含む。例えば、辞書、辞典、シソーラス等を予めマッピング関係として設定し、辞書、辞典、シソーラス等において対応するそれぞれの整数型フォーマットの数値を見つけることができる。本開示の実施例では、マッピング関係により第1テンソルの各文字分割及び/又は単語分割の対応する数値を見つけることは、機械処理をより容易にし、処理速度及び精度を向上させるのに有利である。
【0023】
1つの実施形態において、S204において、マッピング結果を使用して、第2テンソルを生成することは、前記第1テンソルの各行の文字列のマッピング結果に基づいて、前記第2テンソルの各行の数値を得ることを含み、前記第1テンソルはN行の文字列を含み、前記第2テンソルは前記N行の文字列に対応するN行の数値を含み、Nは正の整数である。
【0024】
例えば、第1テンソルにN行の文字列が含まれている場合、上記のマッピング関係により、各文字列行の対応する数値を見つけることができ、N行の数値を得ることができる。このN行の数値からなる行列を第2テンソルとすることができる。本開示の実施例では、第2テンソルにより、第1テキスト変換から得られた数値に対して順序付けを行うことができ、後続の加速処理を容易にする。
【0025】
1つの実施形態において、前記第1テキストは文字列を含み、前記第1テンソルは文字列テンソルであり、前記第2テンソルは整数型テンソルであり、前記第2テンソルの各行の数値は前記第1テンソルの各行の文字列と対応関係を有する。本開示の実施例では、第1テンソルにより文字列に対して順序付けを行い、第2テンソルにより文字列変換により得られた整数型数値に対して順序付けを行い、後続の加速処理を容易にする。
【0026】
1つの実施形態において、S102において、前記テキスト処理加速演算子を使用して、テキスト処理後のコンテンツに対して並列加速を行うことは
S205において、マルチスレッドを使用して、前記第2テンソルに対して並列処理を行うことを含む。例えば、マルチスレッド並列加速演算子により複数のスレッドを呼び出し、各スレッドが第2テンソルの一行の数値を処理できる場合に、第2テンソルの複数の行の数値を並列処理することができる。本開示の実施例では、マルチスレッドにより、テキスト処理速度を大幅に向上させることができ、高性能な文字コーデックを容易に実現することができる。一般に、同時に呼び出すことができるスレッドの数が多いほど、並列処理の速度は速くなる。
【0027】
1つの実施形態において、前記テキスト処理は、第1言語による実行から第2言語による実行に変換される。本開示の実施例では、テキスト処理を第1言語による実行から第2言語による実行に変換することで、マルチスレッド並列加速を利用することができ、異なる言語環境に柔軟に適応するのに有利であり、処理速度をさらに向上させることができる。
【0028】
1つの実施形態において、前記第1言語はインタープリタ型言語であり、前記第2言語はコンパイル型言語である。例えば、本来はインタープリタ型言語により実行していたテキスト処理のフローをコンパイル型言語による実行に変換し、コンパイル型言語がマルチスレッドを呼び出せるという特徴を利用して並列加速を実現する。具体的に、例えば、インタープリタ型言語には、Python、Java(登録商標)などを含み、コンパイル型言語には、C++などを含む。インタープリタ型言語とコンパイル型言語は、上記の例以外のタイプであってもよく、ここでは限定しない。これにより、異なる言語環境に柔軟に適応し、開発の難易度を軽減し、コンパイル型言語による処理速度の向上を図ることができる。
【0029】
図3は、本開示の他の実施例によるテキスト処理方法の流れを示す模式図である。本実施例のテキスト処理方法は、上述した方法の実施例の1つ又は複数の特徴を含むことができる。1つの実施形態において、該方法は、
S301において、自然言語理解モデルを使用して、前記テキスト処理加速演算子により加速後のコンテンツに対して、自然言語理解処理を行うことをさらに含む。本開示の実施例では、テキスト処理加速演算子を自然言語理解モデルに適用することにより、自然言語理解の処理速度を速めることができる。
【0030】
1つの実施形態において、前記自然言語理解モデルは、前記テキスト処理加速演算子と変換エンコーダ演算子とを含む。本実施例では、テキスト処理加速演算子の具体的な機能は、
図1及び
図2の実施例の説明を参照することができる。例えば、テキスト処理加速演算子の中のマルチスレッド並列加速演算子は、第2テンソルから数値を並列に読み取った後、変換(Transformer)エンコーダ演算子に伝達し、変換エンコーダ演算子は受け取った数値に対して文字列エンコードを行うことができる。変換エンコーダ演算子は、多層変換エンコーダを含むことができる。本開示の実施例では、テキスト処理加速演算子及び変換エンコーダ演算子により、迅速かつ正確に自然言語理解処理を行うことができる。
【0031】
1つの実施形態において、前記変換エンコーダ演算子は、融合されたアテンションメカニズム演算子と融合されたフィードフォワード演算子とを含む。
【0032】
例えば、融合されたアテンションメカニズム演算子は、アテンションメカニズムのOP数を減少することができる。具体的に、例えば、マルチヘッドアテンションメカニズムにおける汎用行列乗算(General Matrix-matrix Multiplication、GEMM)、オフセット加算(bias add)、転置(transpose)などを3から1に減らし、データ再利用率を高め、融合されたアテンションメカニズム(Fused Attention)演算子を得ることができる。
【0033】
また、Kernelsを融合し、融合されたフィードフォワード(Fused Feedforward)演算子、例えばFusedDropoutActBias、FusedLnAddDropoutBias、FusedAddDropoutBiasなどを得ることができる。
【0034】
本開示の実施例では、融合されたアテンションメカニズム演算子によりフレームワークスケジューリングオーバーヘッドを低減することができ、融合されたフィードフォワード演算子によりメモリへのアクセスのオーバーヘッドを低減することができる。
【0035】
1つの実施形態において、該方法は、
S302において、自然言語生成モデルを使用して、前記自然言語理解モデルにより処理後のコンテンツに対して、自然言語生成処理を行うこと、をさらに含む。例えば、自然言語生成モデルの変換エンコーダ演算子が自然言語理解結果を出力した後、自然言語生成モデルは、デコーダを利用して自然言語生成モデルに対してデコードや予測などの処理を行い、自然言語生成結果を得ることができる。本発明の実施例では、自然言語生成モデルにより、自然言語理解結果に基づいて生成結果を正確に予測することができる。
【0036】
1つの実施形態において、前記自然言語生成モデルは、変換デコーダ演算子とデコード戦略演算子とを含む。本開示の実施例では、自然言語生成モデルは、変換(Transformer)デコーダ演算子及びデコード戦略演算子を介して、迅速かつ正確に自然言語生成処理を行うことができる。
【0037】
1つの実施形態において、S302において、自然言語生成モデルを使用して、前記自然言語理解モデルにより処理後のコンテンツに対して、自然言語生成処理を行うことは、前記変換デコーダ演算子を使用して、使用された生成ネットワークタイプを識別するように、デコーダコード特性を識別することと、前記生成ネットワークタイプに対応する、予め設定されたデコード演算子を呼び出すことと、を含む。
【0038】
例えば、各種の生成ネットワークタイプに、高性能のデコード演算子を予め設定しておくことができる。ユーザがあるタイプのデコーダコードを選択した場合、変換デコーダ演算子は、該デコーダコードに基づいて、ユーザによって使用された生成ネットワークのタイプを識別することができる。その後、変換デコーダ演算子は、識別された生成ネットワークタイプに対応する、予め設定された高性能のデコード演算子を呼び出すことができる。したがって、本開示の実施例では、複数の生成ネットワークタイプをサポートすることができ、ひいてはより多くのデコード能力をサポートすることができる。
【0039】
1つの実施形態において、生成ネットワークタイプは、
デコーダDecoderタイプと、
プリフィックス言語モデルPrefix LMタイプと、
エンコーダデコーダEncoderーDecoderタイプと、
のうちの少なくとも1つを含む。
【0040】
例えば、Decoderタイプの生成ネットワークは、デコーダ層及びTransformer層などを含むことができる。また、Prefix LMタイプの生成ネットワークは、Prefix LM層やTransformer層などを含むことができる。別の例として、EncoderーDecoderタイプの生成ネットワークは、デコーダ層、Transformer層、エンコーダデコーダ層、及びエンコーダ層などを含むことができる。本開示の実施例では、より包括的な生成ネットワークタイプをサポートすることによって、より豊富なデコード能力が提供される。
【0041】
1つの実施形態において、S302では、自然言語理解モデルを使用して、前記自然言語理解モデルにより処理後のコンテンツに対して、自然言語生成処理を行うことは、前記デコード戦略演算子を使用して、使用されたデコードアルゴリズムを識別するように、デコード戦略特性を識別し、前記デコードアルゴリズムを使用して、第1言語で実行されるループコードを、第2言語のコードに自動的に翻訳することを含む。
【0042】
例えば、ある種のデコードアルゴリズムがユーザによって選択された場合、デコード戦略演算子は、デコード戦略特性を識別し、そしてユーザによって使用された暗号化アルゴリズムを識別し、ひいては第1言語上で実行されるループコードを第2言語のコードに自動的に翻訳することができる。上記の例を参照すると、第1言語はインタープリタ型言語であってもよく、第2言語はコンパイル型言語であってもよい。識別されたデコードアルゴリズムを用いて、インタープリタ型言語上で実行されるループコードをコンパイル型言語のコードに自動的に翻訳することができる。これにより、異る言語間のコード変換を自動的に行い、自然言語生成処理の性能を向上させ、開発の難易度を低減する効果がある。
【0043】
1つの実施形態において、前記デコードアルゴリズムは、
サーチベースのデコードアルゴリズムと、
サンプリングベースのデコードアルゴリズムと、
のうちの少なくとも1つを含む。
【0044】
例えば、サーチベースのデコードアルゴリズムは、貪欲法サーチ、ビームサーチなどを含むことができる。ここで、貪欲法サーチは、ステップごとに最も可能性の高い単語を予測し、その単語を次回の予測の入力とする。ビームサーチは、入力される文法文をエンコーダデコーダで先に用意し、最初の単語の最も可能性の高い確率値を出力し、さらに、各選択された最初の可能性のある単語に対応して、2番目の単語が何であるかを考える。
【0045】
別の例として、サンプリングベースのデコードアルゴリズムは、ランダムサンプリング、トップKサンプリング(Top―K Sampling)、コアサンプリング(Top―P(nucleus) Sampling)を含むことができる。ここで、ランダムサンプリングには、言語モデルによって得られた次の単語のシソーラス全体に対する確率分布に基づいて、ランダムサンプリングを行い、次の単語が何を生成するかを決定することが含まれることができる。Top―K Samplingには、確率の最も高いK個の単語をとり、その後、そのK個の単語の確率を正規化してからサンプリングすることが含まれることができる。Top―Pサンプリングには、現在のすべての単語の確率に対して、大きいものから順に累積し、累積した値が閾値Pより大きい場合に、後続の確率の小さい単語を使用せず、前の単語を再びサンプリングすることが含まれることができる。
【0046】
本開示の実施例において、異なるデコードアルゴリズムによって、より豊富な自動デコード機能をサポートし、コード変換性能を向上させることができる。
【0047】
1つの実施形態において、S302では、自然言語理解モデルにより処理後のコンテンツに対して、自然言語生成処理を行うことは、ディープラーニングフレームワークの即時コンパイル能力を呼び出して、前記第2言語のコードをコンパイルしてダイナミックリンクライブラリを得、前記ダイナミックリンクライブラリを前記ディープラーニングフレームワークとリンクさせることをさらに含む。
【0048】
上記の例を参照すると、第2言語はコンパイル型言語であってもよい。ディープラーニングフレームワークの即時コンパイル能力を呼び出して、該コンパイル型言語のコードを自動的にコンパイルして、動的リンクライブラリを得ることができ、さらにディープラーニングフレームワークを動的リンクライブラリとリンクさせて、高性能な変換デコーダ演算子を得ることができる。
【0049】
図4は、本開示の他の実施例によるテキスト処理方法の流れを示す模式図である。本実施例のテキスト処理方法は、上述した方法の実施例の1つ又は複数の特徴を含むことができる。1つの実施形態において、該方法はさらに、以下のステップを含む。
【0050】
S401において、前記テキスト処理加速演算子のシソーラスを導出する。例えば、テキスト処理加速演算子のシソーラスは、テキスト処理加速演算子によって使用される各単語と数値とのマッピング関係を含むことができる。使用するテキスト処理加速演算子のシソーラスは、自然言語理解モデルごとに異なる場合があり、一部あるいは全部が同一である場合もあり、具体的に自然言語理解モデルが具体的に実現する必要がある機能に応じて決定される。本開示の実施例では、テキスト処理加速演算子のシソーラスを導出した後に繰り返し使用することができ、その後のデプロイの速度を向上させ、デプロイの難易度を減少させるのに役立つ。
【0051】
1つの実施形態において、該方法は、以下の少なくとも1つをさらに含むことができる。
【0052】
S402において、導出されたシソーラスを、バイナリシリアライズ形式で保存する。
【0053】
S403において、圧縮アルゴリズムを使用して、導出されたシソーラスを圧縮して保存する。
【0054】
シリアライズして保存することにより、シソーラスの読み込み速度を向上させ、テキスト処理速度を向上させることに有利である。圧縮して保存することにより、シソーラスが占有する保存容量を削減し、保存リソースを節約することに有利である。
【0055】
図5は、本開示の他の実施例によるテキスト処理方法の流れを示す模式図である。本実施例のテキスト処理方法は、上述した方法の実施例の1つ又は複数の特徴を含むことができる。1つの実施形態において、該方法はさらに以下のステップを含む。
【0056】
S501において、前記テキスト処理加速演算子と変換エンコーダ演算子とを1つの演算子に統合し、自然言語理解モデル計算グラフを導出する。
【0057】
本開示の実施例では、計算グラフは有向グラフとすることができ、その中のノードは数学演算に対応することができる。計算グラフは、数式を表現し評価する方法の1つであることがある。本開示の実施例では、自然言語理解モデル計算グラフにテキスト処理加速演算子及び変換エンコーダ演算子を統合させることは、自然言語理解の速度を速め、正確な自然言語理解結果を得るのに有利である。
【0058】
図6は、本開示の他の実施例によるテキスト処理方法の流れを示す模式図である。本実施例のテキスト処理方法は、上述した方法の実施例の1つ又は複数の特徴を含むことができる。1つの実施形態において、方法はさらに以下のステップを含む。
【0059】
S601において、デコード戦略に従って、ループデコードのフレームワーク計算グラフを生成する。
【0060】
S602において、前記ループデコードのフレームワーク計算グラフに変換デコーダ演算子を埋め込む。
【0061】
S603において、自然言語生成モデル計算グラフを導出する。
【0062】
例えば、最初に、デコード戦略に従って、ループデコードのためのフレームワーク計算グラフ(デコードフレームワーク計算グラフと略称することができる。)を生成し、該デコードフレームワーク計算グラフは主にループフローチャートを含む。そして、該デコードフレームワーク計算グラフにデコーダの計算構造を補完する。例えば、デコーダの計算構造は、デコーダコード特性を変換デコーダ演算子で識別して得られた生成ネットワーク構造を含むことができる。
【0063】
本開示の実施例では、変換デコーダ演算子をデコードフレームワーク計算グラフに埋め込むことは、自然言語生成モデル計算グラフを迅速に導出することを可能にし、後続のデプロイの困難さを低減し、デプロイの速度を向上させるのに有利である。
【0064】
1つの実施形態において、該方法は、自然言語理解モデル計算グラフと自然言語生成モデル計算グラフとが統合された計算グラフを含む、自然言語処理統合計算グラフを導出することをさらに含み、ここで、前記自然言語理解モデル計算グラフは、テキスト処理加速演算子と変換エンコーダ演算子とを含み、前記自然言語生成モデル計算グラフは、変換デコーダ演算子とデコード戦略演算子とを含む。ここで、統合された計算グラフは、自然言語理解モデル計算グラフの演算子と自然言語生成モデル計算グラフの演算子とを含むことができる。
【0065】
本開示の実施例では、統合された計算グラフを導出することにより、一体化保存を実現でき、導出方法が簡単であり、導出された計算グラフによって豊かな自然言語理解及び生成機能がサポートされることができる。
【0066】
1つの実施形態において、該方法は、自然言語理解モデル計算グラフと、自然言語生成モデル計算グラフと、統合された計算グラフと、のうちの少なくとも1つを、複数のデバイスのディープラーニングフレームワークに導入することをさらに含む。このようにすれば、一度の導出により、多くのデプロイを実現するのに有利であり、複数のデバイスの訓練・推論一体化に対する統一デプロイのニーズを満たすことができる。
【0067】
図7は、本開示の一実施例によるテキスト処理装置の構成を示す概略図である。この装置は、
テキスト処理加速演算子を使用して、第1テキストに対してテキスト処理を行うためのテキスト処理モジュール701と、
前記テキスト処理加速演算子を使用して、テキスト処理後のコンテンツに対して並列加速を行うための並列加速モジュール702と、を備える。
【0068】
本開示の実施例では、テキスト加速処理演算子によるテキスト処理及び加速により、テキスト処理速度を向上させることができる。
【0069】
図8は、本開示の他の実施例によるテキスト処理装置の構成を示す概略図である。本実施例のテキスト処理装置は、上述した装置の実施例の1つ又は複数の特徴を含むことができる。1つの実施形態において、テキスト処理モジュール701は、
前記第1テキストに対応する第1テンソルを取得するための第1テンソルサブモジュール801と、
前記第1テンソルに対して分割を行って、複数の分割結果を得るための分割サブモジュール802と、
各前記分割結果に対して識別子マッピングを行うためのマッピングサブモジュール803と、
マッピング結果を使用して、第2テンソルを生成するための第2テンソルサブモジュール804と、を備える。
【0070】
1つの実施形態において、分割サブモジュール802は、具体的に、前記第1テンソルに対して文字分割処理を行って、複数の分割文字を得ることと、前記第1テンソルに対して単語分割処理を行って、複数の分割単語を得ることとのうちの少なくとも1つを実行することに用いられる。
【0071】
1つの実施形態において、前記マッピングサブモジュール803は、具体的に、マッピング関係に基づいて、各分割文字及び/又は分割単語を数値にマッピングすることに用いられる。
【0072】
1つの実施形態において、前記第2テンソルサブモジュール804は、具体的に、前記第1テンソルの各行の文字列のマッピング結果に基づいて、前記第2テンソルの各行の数値を得ることに用いられ、ここで、前記第1テンソルはN行の文字列を含み、前記第2テンソルは前記N行の文字列に対応するN行の数値を含み、Nは正の整数である。
【0073】
1つの実施形態において、前記第1テキストは文字列を含み、前記第1テンソルは文字列テンソルであり、前記第2テンソルは整数型テンソルであり、前記第2テンソルの各行の数値は前記第1テンソルの各行の文字列と対応関係を有する。
【0074】
1つの実施形態において、前記並列加速モジュール702は、具体的に、マルチスレッドを使用して、前記第2テンソルに対して並列処理を行うことに用いられる。
【0075】
1つの実施形態において、前記テキスト処理モジュール701によるテキスト処理は、第1言語による実行から第2言語による実行に変換される。
【0076】
図9は、本開示の他の実施例によるテキスト処理装置の構成を示す概略図である。本実施例のテキスト処理装置は、上述した装置の実施例の1つ又は複数の特徴を含むことができる。1つの実施形態において、該装置は、自然言語理解モデルを使用して、前記テキスト処理加速演算子により加速後のコンテンツに対して、自然言語理解処理を行うための自然言語理解モジュール901をさらに備える。
【0077】
1つの実施形態において、前記自然言語理解モデルは、前記テキスト処理加速演算子と変換エンコーダ演算子とを含む。
【0078】
1つの実施形態において、前記変換エンコーダ演算子は、融合されたアテンションメカニズム演算子と融合されたフィードフォワード演算子とを含む。
【0079】
1つの実施形態において、該装置は、自然言語生成モデルを使用して、前記自然言語理解モデルにより処理後のコンテンツに対して、自然言語生成処理を行うための自然言語生成モジュール902をさらに備える。
【0080】
1つの実施形態において、前記自然言語生成モデルは、変換デコーダ演算子とデコード戦略演算子とを含む。
【0081】
1つの実施形態において、自然言語生成モジュール902は、前記変換デコーダ演算子を使用して、使用された生成ネットワークタイプを識別するように、デコーダコード特性を識別し、前記生成ネットワークタイプに対応する、予め設定されたデコード演算子を呼び出すための変換デコードサブモジュール9021を備える。
【0082】
1つの実施形態において、前記生成ネットワークタイプは、
デコーダDecoderタイプと、
プリフィックス言語モデルPrefix LMタイプと、
エンコーダデコーダEncoderーDecoderタイプと、
のうちの少なくとも1つを含む。
【0083】
1つの実施形態において、自然言語生成モジュール902は、前記デコード戦略演算子を使用して、使用されたデコードアルゴリズムを識別するように、デコード戦略特性を識別し、前記デコードアルゴリズムを使用して、第1言語で実行されるループコードを、第2言語のコードに自動的に翻訳することためのデコード戦略サブモジュール9022を備える。
【0084】
1つの実施形態において、前記デコードアルゴリズムは、
サーチベースのデコードアルゴリズムと、
サンプリングベースのデコードアルゴリズムと、
のうちの少なくとも1つを含む。
【0085】
1つの実施形態において、自然言語生成モジュール902は、ディープラーニングフレームワークの即時コンパイル能力を呼び出して、前記第2言語のコードをコンパイルしてダイナミックリンクライブラリを得、前記ダイナミックリンクライブラリを前記ディープラーニングフレームワークとリンクさせるためのコンパイルサブモジュール9023をさらに備える。
【0086】
1つの実施形態において、第1言語はインタープリタ型言語であり、第2言語はコンパイル型言語である。
【0087】
図10は、本開示の他の実施例によるテキスト処理装置の構成を示す概略図である。本実施例のテキスト処理装置は、上述した装置の実施例の1つ又は複数の特徴を含むことができる。1つの実施形態において、該装置はさらに、テキスト処理加速演算子のシソーラスを導出するための第1導出モジュール1001を備える。
【0088】
1つの実施形態において、該装置は、
導出されたシソーラスを、バイナリシリアライズ形式で保存することと、
圧縮アルゴリズムを使用して、導出されたシソーラスを圧縮して保存することと、
のうちの少なくとも1つに用いられる保存モジュール1002をさらに備える。
【0089】
1つの実施形態において、該装置は、前記テキスト処理加速演算子と変換エンコーダ演算子とを1つの演算子に統合し、自然言語理解モデル計算グラフを導出するための第2導出モジュール1003をさらに備える。
【0090】
1つの実施形態において、該装置は、デコード戦略に従って、ループデコードのフレームワーク計算グラフを生成し、前記ループデコードのフレームワーク計算グラフに変換デコーダ演算子を埋め込み、自然言語生成モデル計算グラフを導出するための第3導出モジュール1004をさらに備える。
【0091】
1つの実施形態において、該装置は、自然言語理解モデル計算グラフと自然言語生成モデル計算グラフとが統合された計算グラフを含む、自然言語処理統合計算グラフを導出するための第4導出モジュール1005をさらに備え、ここで、前記自然言語理解モデル計算グラフは、テキスト処理加速演算子と変換エンコーダ演算子とを含み、前記自然言語生成モデル計算グラフは、変換デコーダ演算子とデコード戦略演算子とを含む。
【0092】
1つの実施形態において、該装置は、自然言語理解モデル計算グラフと、自然言語生成モデル計算グラフと、統合された計算グラフと、のうちの少なくとも1つを、複数のデバイスのディープラーニングフレームワークに導入するためのデプロイモジュール1006をさらに備える。
【0093】
本開示の実施例に係るテキスト処理装置の各モジュールの具体的な機能及び例は、上述したテキスト処理方法の実施例における説明を参照することができるので、ここではこれ以上言及しない。
【0094】
図11は、本開示の一実施例によるディープラーニングフレームワークに基づくシステムの構成を示す概略図ある。該システムは、第1テキストに対してテキスト処理を行い、テキスト処理後のコンテンツに対して並列加速を行うためのテキスト処理加速演算子1001を含む。
【0095】
本開示の実施例では、テキスト加速処理演算子によるテキスト処理及び加速によって、ディープラーニングフレームワークに基づくシステムのテキスト処理速度を向上させることができる。
【0096】
図12は、本開示の他の実施例によるディープラーニングフレームワークに基づくシステムの構成を示す概略図である。本実施例のディープラーニングフレームワークに基づくシステムは、上述したシステムの実施例の1つ又は複数の特徴を含むことができる。1つの実施形態において、テキスト処理加速演算子1101は、
前記第1テキストに対応する第1テンソルを取得するための第1テンソル演算子1201と、
前記第1テンソルに対して分割を行って、複数の分割結果を得るための分割演算子1202と、
各前記分割結果に対して識別子マッピングを行うためのマッピング演算子1203と、
マッピング結果を使用して、第2テンソルを生成するための第2テンソル演算子1204と、を備える。
【0097】
1つの実施形態において、前記分割演算子1202は、具体的に
【0098】
前記第1テンソルに対して文字分割処理を行って、複数の分割文字を得ることと、
前記第1テンソルに対して単語分割処理を行って、複数の分割単語を得ることと、
のうちの少なくとも1つを実行するために用いられる。
【0099】
1つの実施形態において、マッピング演算子1203は、具体的に、マッピング関係に基づいて、各分割文字及び/又は分割単語を数値にマッピングすることに用いられる。
【0100】
1つの実施形態において、第2テンソル演算器1204は、具体的に、前記第1テンソルの各行の文字列のマッピング結果に基づいて、前記第2テンソルの各行の数値を得ることに用いられ、ここで、前記第1テンソルはN行の文字列を含み、前記第2テンソルは前記N行の文字列に対応するN行の数値を含み、Nは正の整数である。
【0101】
1つの実施形態において、前記第1テキストは文字列を含み、前記第1テンソルは文字列テンソルであり、前記第2テンソルは整数型テンソルであり、前記第2テンソルの各行の数値は前記第1テンソルの各行の文字列と対応関係を有する。
【0102】
1つの実施形態において、前記テキスト処理加速演算子1101は、マルチスレッドを使用して、前記第2テンソルに対して並列処理を行うためのマルチスレッド並列加速演算子1205をさらに備える。
【0103】
1つの実施形態において、前記第1テンソル演算子、分割演算子、マッピング演算子、及び第2テンソル演算子は、第1言語により実行され、前記マルチスレッド並列加速演算子は、第2言語により実行される。
【0104】
図13は、本開示の他の実施例によるディープラーニングフレームワークに基づくシステムの構成を示す概略図である。該実施例のディープラーニングフレームワークに基づくシステムは、上述したシステムの実施例の1つ又は複数の特徴を含むことができる。1つの実施形態において、該システムは、前記テキスト処理加速演算子により加速後のコンテンツに対して、自然言語理解処理を行うための自然言語理解モデル1301をさらに備える。
【0105】
1つの実施形態において、前記自然言語理解モデルは、前記テキスト処理加速演算子1101及び変換エンコーダ演算子1102を含む。
【0106】
1つの実施形態において、前記変換エンコーダ演算子1102は、融合されたアテンションメカニズム演算子と融合されたフィードフォワード演算子とを含む。
【0107】
1つの実施形態において、該システムは、前記自然言語理解モデルにより処理後のコンテンツに対して、自然言語生成処理を行うための自然言語生成モデル1302をさらに備える。
【0108】
1つの実施形態において、前記自然言語生成モデル1302は、変換デコーダ演算子13021とデコード戦略演算子13022とを含む。
【0109】
1つの実施形態において、前記変換デコーダ演算子13021は、
使用された生成ネットワークタイプを識別するように、デコーダコード特性を識別し、
前記生成ネットワークタイプに対応する、予め設定されたデコード演算子を呼び出すことに用いられる。
【0110】
1つの実施形態において、前記生成ネットワークタイプは、
デコーダDecoderタイプと、
プリフィックス言語モデルPrefix LMタイプと、
エンコーダデコーダEncoderーDecoderタイプと、
のうちの少なくとも1つを含む。
【0111】
1つの実施形態において、前記デコード戦略演算子13022は、
使用されたデコードアルゴリズムを識別するように、デコード戦略特性を識別し、
前記デコードアルゴリズムを使用して、第1言語で実行されるループコードを、第2言語のコードに自動的に翻訳することに用いられる。
【0112】
1つの実施形態において、前記デコードアルゴリズムは、
サーチベースのデコードアルゴリズムと、
サンプリングベースのデコードアルゴリズムと、
のうちの少なくとも1つを含む。
【0113】
1つの実施形態において、該自然言語生成モデルは、ディープラーニングフレームワークの即時コンパイル能力を呼び出して、前記第2言語のコードをコンパイルしてダイナミックリンクライブラリを得、前記ダイナミックリンクライブラリを前記ディープラーニングフレームワークとリンクさせるためのコンパイル演算子13023をさらに含む。
【0114】
1つの実施形態において、前記第1言語はインタープリタ型言語であり、前記第2言語はコンパイル型言語である。
【0115】
図14は、本開示の他の実施例によるディープラーニングフレームワークに基づくシステムの構成を示す概略図である。本実施例のディープラーニングフレームワークに基づくシステムは、上述したシステムの実施例の1つ又は複数の特徴を含むことができる。1つの実施形態において、該システムは、前記テキスト処理加速演算子のシソーラスを導出するための第1導出モジュール1401をさらに備える。
【0116】
1つの実施形態において、該システムは、
導出されたシソーラスを、バイナリシリアライズ形式で保存することと、
圧縮アルゴリズムを使用して、導出されたシソーラスを圧縮して保存することと、
のうちの少なくとも1つを実行するための保存モジュール1402をさらに含む。
【0117】
1つの実施形態において、該システムは、前記テキスト処理加速演算子と変換エンコーダ演算子とを1つの演算子に統合し、自然言語理解モデル計算グラフを導出するための第2導出モジュール1403をさらに備える。
【0118】
1つの実施形態において、該システムは、デコード戦略に従って、ループデコードのフレームワーク計算グラフを生成し、前記ループデコードのフレームワーク計算グラフに変換デコーダ演算子を埋め込み、自然言語生成モデル計算グラフを導出するための第3導出モジュール1404をさらに備える。
【0119】
1つの実施形態において、該システムは、自然言語理解モデル計算グラフと自然言語生成モデル計算グラフとが統合された計算グラフを含む、自然言語処理統合計算グラフを導出するための第4導出モジュール1405をさらに備える。
【0120】
ここで、前記自然言語理解モデル計算グラフは、テキスト処理加速演算子と変換エンコーダ演算子とを含み、前記自然言語生成モデル計算グラフは、変換デコーダ演算子とデコード戦略演算子とを含む。
【0121】
1つの実施形態において、該システムは、自然言語理解モデル計算グラフと、自然言語生成モデル計算グラフと、統合された計算グラフと、のうちの少なくとも1つを、複数のデバイスのディープラーニングフレームワークに導入するためのデプロイモジュール1406をさらに備える。
【0122】
本開示の実施例のディープラーニングフレームワークに基づくシステムの各演算子及び/又はモジュールの具体的な機能及び例は、上述したテキスト処理方法の実施例における関連の説明を参照することができ、ここではこれ以上言及しない。
【0123】
現在のディープラーニングフレームワークは、NLPシーンに応用するためにモデルの事前訓練を解決する際に、訓練・推論性能には依然として改善余地が多く残されており、かつ開発体験は訓練とデプロイの際に不一致を呈し、実際の産業シーンにおいても応用とデプロイのコストを高めている。
【0124】
PyTorchのようなディープラーニングフレームワークはフレームワーク外でインタープリタ型言語(例えばPython)を用いて処理を行い、ディープラーニングフレームワークはディープラーニングモデル、例えば、DNN(Deep Neural Networks、ディープニューラルネットワーク)モデル、変換(Transformer)モデル、ERNIE(PaddlePaddle意味理解フレームワーク)モデル、BERT(BiDirectional Encoder Rpresentation From Transformers、変換からの双方向エンコーダ表現)部分の高性能計算に焦点を合わせる。しかし、インターネット企業のような産業界のシーンに対して、究極の性能とコストを追求して、モデルをオンラインでデプロイする必要がある時にコンパイル型言語(C++など)を選択して使い、モデルに対してエンドツーエンドの開発を実現する。このとき、C++側でテキスト処理部分のロジックを実現するが必要となる。ディープラーニングフレームワークが(DNN/Transformer/BERT/ERNIE)のような事前に訓練されたモデルに対してC++推論のみを行う場合、開発者はPythonの複雑なテキスト処理ロジックに対してC++バージョンのものを書き直し、厳密に位置合わせとテストを行う必要がある。モデルとアプリケーションシーンの遷移に伴い、テキスト処理の流れは大幅に変化し(例えば、テキスト分類から機械翻訳への遷移など、2つのテキスト処理ロジックはまったく異なる。)、開発コストは非常に高く、コード化などの詳細な問題が発生しやすく、オンラインデプロイ効果の誤りや不整合が発生する。例えば、BERTモデルを参照して学習と推論を行うテキスト処理モジュールは、C++バージョンを持たず、TensorFlowフレームワークと分離した純粋なPythonバージョンの処理を用いている。
【0125】
いくつかのフレームワークは、テキスト処理(Tokenizer部分)の実現ロジックが複雑で開発コストが高く、多くはインタープリタ型言語(例えば、Python)で実現されているため、実現性能が比較的低い。また、インタープリタ型言語に限定されており、マルチスレッド並列加速が困難である。このため、本開示の実施例は、テキスト処理自動演算子のフローを提案し、フレームワーク内において事前に訓練されたモデルに対するテキスト処理演算子を提供することができ、コンパイル型言語を利用してマルチスレッド並列加速を実現することができる。
【0126】
自然言語生成モデルについて、デコード戦略の複雑さにより、多くのフレームワークはデコードのためのループをインタープリタ型言語上で行うため、大量のフレームワークスケジューリングオーバーヘッドが発生することで、GPUの利用率が低く、テキスト生成速度が遅い。このため、本開示の実施例は、ネットワーク識別の自動生成、デコード戦略識別、コンパイル型コード生成、即時コンパイルなどの加速プロセスを提案する。
【0127】
その他のフレームワークNLPは、産業レベルのデプロイプロセスが煩雑でコストが比較的高い。このために、本開示の実施例は、NLPモデルに対して導出のデプロイを行い、テキスト処理演算子部分を計算グラフと融合して導出することができ、テキスト処理、自然言語理解、及び生成計算グラフの連合導出を含むプロセスを提案し、デプロイコストを低減する。
【0128】
本開示の実施例では、例えば、バイドゥPaddlePaddleディープラーニングフレームワークなどの、自然言語理解と生成という2つの重要な応用シーンを満たす効率的な開発、訓練、推論のセットであるディープラーニングフレームワークに依拠した方法及びシステムを提供する。本開示の実施例の態様は、テキスト分類、シーケンスラベリング、機械翻訳、テキスト生成、読解、汎用対話等の様々な自然言語処理の産業化の現場に広く適用することができる。
【0129】
本開示の実施例は、自然言語処理のディープラーニングフレームワークにおける適用特徴について、エンドツーエンドのテキスト処理演算子化、自然言語理解モデルと生成モデルとの連合加速、及び訓練と推論の一体的な配置スキームのうちの少なくとも1つを含む、以下の適用フローを提案する。
【0130】
ディープラーニングフレームワークのエンドツーエンドテキスト処理の演算子化の流れ
【0131】
ディープラーニングフレームワークの全体的にテンソル(Tensor)を使用して加速できる特徴に対して、プレーンテキスト(Raw Text)タイプについてのテンソル表現セットを提供する。この方式は、文字列テンソルのプロトコルにより、コンパイラ技術のコード生成(Code Gen)原理を組み合わせて、インタープリタ型言語(例えば、Python)上で実現されている低性能プロセスを自動的に融合し、対応する高性能C++コードを自動的に生成することができる。例えば、MKLDNNなどの中央処理装置(CPU)高性能加速ライブラリによる自動並列化は、従来の解釈型(例えばPython)コードの実現速度の約100倍に達した。例示的に、上記の低性能プロセスは、例えば、基礎単語分割モジュール、識別子(Identifier、ID)マッピングモジュールなどの細粒度モジュールの機能などの複数の複雑なテキスト処理プロセスを含むことができる。
【0132】
図15に示すように、ディープラーニングエンドツーエンドテキスト処理の演算子化プロセスであり、テキスト処理を自動で演算子化し、マルチスレッドにより並列加速することができる。例えば、テキスト処理自動演算子化では、まず文字列テンソル演算子が元の文字列テキスト(String Text)を文字列テンソル(String Tensor)に変換し、分割演算子が基礎文字分割モジュールを利用して文字列テンソルに対して文字分割を行う。そして、マッピング演算子は各文字分割結果に対してそれぞれIDマッピングを行い、各文字分割結果に対応する整数型数値を得て、さらに整数型テンソル演算子は元の文字列に対応する正規値を利用して整数型テンソル(Integer Tensor)を得る。マルチスレッドにより整数型テンソルを並列処理することができる。テキスト処理自動演算子化プロセスは、上記のテキスト処理と並列加速を、例えば加速単語分割器演算子(FasterTokenizer Operator)によって実現することができ、インタープリタ型言語実行時に実現した基本的なテキスト処理機能を、コンパイル型言語実行時に実現するように変換し、コンパイル型言語のマルチスレッド並列処理が可能な特徴を利用して、テキスト処理速度を大幅に向上する。加速単語分割器演算子は、加速版単語分割器、加速版単語分割器、単語分割器などとも呼ぶことができる。
【0133】
自然言語理解とタスク生成自動化によるプロセスの加速
【0134】
自然言語理解モデルのタイプについて、主に変換モデルに基づくエンコーダ(Transformer Encoder)(変換エンコーダと略してもよい)タイプである。
【0135】
図16に示すように、変換(Transformer)エンコーダ構造の模式図である。該Transformerエンコーダは、Add&Norm、フィードフォワード(Feed Forward)を含むことができ、
例示的に、自然言語生成モデルのタイプは、エンコーダタイプに応じて、以下のようなものを含むことができる。
【0136】
純粋なデコーダ(Decoder)タイプとして、
図17aに示すように、純粋なDecoderタイプの自然言語生成モデルは、変換(Transformer)層、デコーダ(Decoder)層、及びTransformer層を含むことができる。純粋なDecoderタイプの代表的なモデル構造として、例えば生成式事前訓練(Gererate Pre―Training,GPT)モデルがある。
【0137】
プリフィックス言語モデル(Prefix Language Model、Prefix LM)タイプとして、
図17bに示すように、純粋なPrefix LMタイプの自然言語生成モデルには、Transformer層、Prefix LM層、及びTransformer層を含むことができる。Prefix LMタイプの代表的なモデルとして、統一言語モデル(Unified Language Model,UniLM)、PLATOモデル(汎用ドメイン対話生成事前訓練モデルの一種)がある。
【0138】
エンコーダデコーダ(Encoder-Decoder)タイプとして、
図17cに示すように、Encoder-Decoderタイプの自然言語生成モデルは、Transformer層、Decoder層、Transformer層、Encoder-Decoder層、Transformer層、Encoder-Decoder層、Transformer層、Encoder層、Encoder層、Encoder層、及びTransformer層を含むことができる。Encoder―Decoderタイプの代表的なモデルには、BART(Bidirectional and Auto―Regressive Transformers)モデルなどがある。
【0139】
例示的に、生成されたデコード戦略は、以下のタイプを含むことができる。
【0140】
サーチベースの デコードアルゴリズムは、例えば、ビームサーチ(Beam Search)、貪欲法サーチ(Greedy Search)、多様同胞サーチ(Diverse Sibling Search)などである。
図18aに示すように、ビームサーチの一例である。入力された文法文は、最初にエンコーダデコーダを用いて与えられ、最初の単語の最も可能性の高い確率値、例えば、単語1から単語2までの確率は0.4、単語3までの確率は0.5、単語4までの確率は0.1である。次に、選択された第1可能性のある単語ごとに、第2単語が何であるかを考慮する。例えば、単語2から単語5への確率は0.05、単語6への確率は0.05、単語7への確率は0.9である、単語3から単語8への確率は0.4、単語9への確率は0.4、単語10への確率は0.3、単語4から単語11への確率は0.3、単語12への確率は0.5、単語13への確率は0.2である。
【0141】
サンプルに基づくデコードモジュール、例えば、トップKサンプル(Top―K Sampling)、コアサンプル(Top―P Sampling)など。
図18(b)に示すように、サンプリングサーチの一例である。
【0142】
本開示の実施例では、
図19に示されるように、自然言語理解モデル(理解モジュールと略称される)と自然言語生成モデル(生成モジュールと略称される)との両方を統合的に加速するためのプロセスが提供され、該プロセスは、以下の部分を含むことができる。
【0143】
1.
図19に示すように、理解モデルTransformerエンコーダに対する加速最適化は、以下のステップを含むことができる。
【0144】
S11において、オリジナルテキスト、例えば文字列(String Text)入力に対して、フレームワークは、高速版分割演算子(FasterTokenizer Operator)を自動挿入してオリジナルテキストを高性能に処理することができる。
【0145】
S12において、マルチレイヤTransformerエンコーダを呼び出して文字列をエンコードする。
【0146】
例示的に、理解モデル内のエンコーダに対する最適化は、アテンションメカニズム融合及びフィードフォワード融合を含むことができる。
【0147】
(1)フレームワークスケジューリングのオーバーヘッドを低減するため、符号化プロセス中にマルチヘッドアテンションメカニズムに対して融合最適化を行うことができる。例えば、演算子の数を1/3に減らすことができ、
図20a、
図20b、
図20cに示すように、マルチヘッドアテンションメカニズムにおけるGEMM、オフセット加算(bias add)、転置(transpose)などを3から1に減らし、データ再利用率を高め、融合アテンションメカニズム(Fused Attention)演算子を得ることができる。
【0148】
(2)Feedforward層を融合最適化する。例えば、
図20cに示すように、従来の3つのGPUのカーネル(Kernel)演算子を1つに融合すると、例えば、融合した演算子はFusedDropoutActBias、FusedLnAddDropoutBias、FusedAddDropoutBiasなどを含むことができ、融合したフィードフォワード(Fused Feedforward)演算子が得られる。例えば、8 load/storeから4 load/storeへと、2倍のアクセス動作オーバーヘッドを大幅に削減することができる。
【0149】
2.生成モデルにおけるTransformerデコーダの加速最適化。
図20a、20b及び20cも参照する。例えば、加速最適化プロセスは、以下のステップを含むことができる。
【0150】
S21において、生成ネットワークタイプを識別し、閾値デコード演算子を呼び出す。具体的には、多層Transformerデコーダ演算子は、ユーザデコーダコード特性を識別し、生成ネットワークタイプを分類することができ、例えば、
図17a、
図17b及び
図17cに示されるタイプに応じて、ユーザデコーダコード特性は、これら3つのタイプの生成ネットワークのうちのいずれかのタイプとして識別される可能性がある。次に、識別された生成ネットワークに対応する予め設定された高性能デコード演算子を自動的に起動して計算することができる。
【0151】
S22において、デコード戦略を認識し、コンパイル型言語を自動生成する。具体的に、デコード戦略演算子は、ユーザデコード戦略特性を識別し、ユーザデコード戦略がサーチベースの アルゴリズムか、又はサンプリングベースのアルゴリズムかを決定することができる。サーチベースのアルゴリズムとサンプリングベースのアルゴリズムとの違いに対して、インタープリタ型言語上のループコードを、コンパイル型言語のコードに自動翻訳して性能を向上させることができる。
【0152】
S23において、フレームワークが自動的に即時コンパイルし、演算子を自動生成してリンクする。例えば、PaddlePaddleフレームワークのようなディープラーニングフレームワークの即時コンパイル(Just In-time Compiler)能力を呼び出して、高速にダイナミックリンクライブラリを得て、リンクによって高性能なデコーダ演算子を得る。
【0153】
プロセスは、テキストの生成が終了するまで、N回繰り返される。
【0154】
三.理解モデルと生成モデルの訓練・推論一体化のデプロイ方案の流れは、次の部分を含むことができる。
【0155】
第1部は、理解モデルの導出であり、以下のステップを含むことができる。S1.1において、まず、単語分割器にあるシソーラスを導出し、バイナリシリアライズ形式で保存する必要がある。(選択可能な)S1.2において、シソーラスのテキスト特性に対して一連の圧縮アルゴリズムを用いてシソーラスファイルの保存を減少させることも可能である。S1.3において、単語分割器と多層Transformerエンコーダを1つの演算子に統合し、全体の理解モデル計算グラフとして導出する。
【0156】
第2部は、生成モデルの導出であり、以下のステップを含むことができる。S2.1において、まずデコード戦略に基づいて、ループデコードのフレームワーク計算グラフ(ループフレームワーク計算グラフと略称してもよい)を生成する。S2.2において、多層Transformerデコーダの演算子をデコード戦略ループであるループフレームワーク計算グラフに埋め込む。S2.3において、生成モデル計算グラフを生成する。
【0157】
第3部は、業務ニーズに応じて計算グラフの統合を行う。自然言語理解部分のみが必要であれば、理解モデル計算グラフを用いるだけでよい。生成モデル部分の計算グラフが必要である場合に、理解モデル計算グラフと生成モデル計算グラフとを1つの計算グラフに統合することができ、複数デバイスの訓練・推論を一体的かつ統一的にデプロイするニーズを満たすことができる。
【0158】
本開示の実施例の方案は、自然言語理解の全体シーン応用の訓練モデル速度、推論速度及びデプロイコストを効果的に向上させ、訓練と推論の一体的なデプロイ体験を達成することができる。
【0159】
図21aに示すように、フレームワーク別テキスト処理性能を比較したグラフであるが、高速版単語分割方案(本方案)により、他のフレームワークによるテキスト処理速度を大きく上回ることができる。本方案は、例えば、Paddle FasterTokenizerであってもよい。比較方案1はHuggingFace Tokenizers(Rust)であり、比較方案2はHuggingFace Tokenizers(Python)であり、比較方案3はTensorFlow Textである。
【0160】
本方案のモデルフォワード計算はオリジナルテキストの入力をサポートし、テキスト処理とモデル計算はグラフ全体の導出をサポートする。本方案の訓練速度と推論速度とは、従来の方式に比べて、200%以上加速でき、推論速度は160%向上しており、
図21bと
図21cに示すように記録されている。
【0161】
同時デプロイのコストは非訓練・推論一体化バージョンに比べ、コード量を94%削減できる。例えば、C++デプロイコードは800行以上から48行に削減される。
【0162】
図21dを参照すると、機械翻訳のような生成タスクは、本方案による生成モデルと理解モデルを融合して最適化する戦略を用いた場合、加速比が同種のフレームワーク、例えばPyTorchのネイティブな実現に比べて最大10倍以上向上していることが分かる。
【0163】
本開示の実施例は、ディープラーニングフレームワークを中心とした自然言語理解及び自然言語生成の全体応用シーンにおける全体流れの開発パラダイムを提案し、モデル訓練と推論の性能を大幅に向上させ、デプロイコストを削減することができる。ディープラーニングテンソル化計算の特性を生かし、インタープリタ型言語のテキスト処理流れに対してコンパイル型言語を自動生成し、並行加速の能力をテンソル化する。自然言語理解と生成の計算グラフの演算子は融合して最適化し、フレームワークのスケジューリングとアクセスメモリのオーバーヘッドを低減させ、性能を大幅に向上させる。テキスト処理、自然言語理解、自然言語生成の計算グラフを共同で導出し、全体流れを一体化して保存し、1回の導出で複数箇所にデプロイする、訓練と推論が一体となった特色のある開発体験を形成し、デプロイコストを削減する。
【0164】
本開示の技術方案において、関連するユーザの個人情報の取得、保存及び応用等は、いずれも関連法律法規の規定に合致しており、公序良俗に反するものではない。
【0165】
本開示の実施例によれば、本開示は、電子デバイス、読取可能記憶媒体及びコンピュータプログラム製品をさらに提供する。
【0166】
図22は、本開示の実施例を実現するための例示的電子デバイス2200のブロック図である。電子デバイスは、各形式のデジタルコンピュータを指し、例えば、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、大型コンピュータ、及びその他の適合するコンピュータが挙げられる。電子デバイスは、各形式の移動装置をさらに指し、例えば、パーソナルデジタルアシスタント、セルラー電話、スマートフォン、ウェアラブルデバイス、及びその他の類似のコンピュータ装置が挙げられる。本開示に記載されているコンポーネント、それらの接続関係、及び機能は例示的なものに過ぎず、本開示に記載・特定されているものの実現を限定するわけではない。
【0167】
図22に示すように、電子デバイス2200は、リードオンリーメモリ(ROM)2202に記憶されたコンピュータプログラム命令、又は記憶ユニット2208からランダムアクセスメモリ(RAM)2203にローディングされたコンピュータプログラム命令に基づいて、各種の適切な動作と処理を実行できる計算ユニット2201を含む。RAM2203には、デバイス2200の動作に必要な各種のプログラム及びデータをさらに記憶することができる。計算ユニット2201と、ROM2202と、RAM2203とは、バス2204を介して互いに接続されている。入力/出力(I/O)インタフェース2205もバス2204に接続されている。
【0168】
電子デバイス2200における複数のコンポーネントは、I/Oインタフェース2205に接続されており、その複数のコンポーネントは、キーボードやマウスなどの入力ユニット2206と、種々なディスプレイやスピーカなどの出力ユニット2207と、磁気ディスクや光学ディスクなどの記憶ユニット2208と、ネットワークカード、モデム、無線通信トランシーバーなどの通信ユニット2209と、を備える。通信ユニット2209は、デバイス2200がインターネットのようなコンピュータネット及び/又は種々なキャリアネットワークを介して他の機器と情報/データを交換することを許可する。
【0169】
計算ユニット2201は、処理及び計算能力を有する様々な汎用及び/又は専用の処理コンポーネントであってもよい。計算ユニット2201のいくつかの例としては、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、様々な専用の人工知能(AI)計算チップ、様々な機械学習モデルアルゴリズムを実行する計算ユニット、デジタル信号プロセッサ(DSP)、及び任意の適切なプロセッサ、コントローラ、マイクロコントローラなどを備えるが、これらに限定されない。計算ユニット2201は、上述で説明された各方法及び処理を実行する。例えば、いくつかの実施例では、上述で説明された各方法を、記憶ユニット2208のような機械読み取り可能な媒体に有形的に含まれるコンピュータソフトウエアプログラムとして実現することができる。一部の実施例では、コンピュータプログラムの一部又は全ては、ROM2202及び/又は通信ユニット2209を介して、電子デバイス2200にロード及び/又はインストールすることができる。コンピュータプログラムがRAM2203にロードされて計算ユニット2201によって実行される場合に、上述で説明された各方法の一つ又は複数のステップを実行することができる。追加可能に、他の実施例では、計算ユニット2201は、他の任意の適当な方式(例えば、ファームウェア)により上述で説明された各方法を実行するように構成することができる。
【0170】
ここで記載されているシステム又は技術の各種の実施形態は、デジタル電子回路システム、集積回路システム、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準品(ASSP)、システムオンチップ(SOC)、コンプレックスプログラマブルロジックデバイス(CPLD)、コンピュータのハードウェア、ファームウェア、ソフトウェア、及び/又はこれらの組み合わせによって実現することができる。これらの各実施形態は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステムにて実行及び/又は解釈される1つ又は複数のコンピュータプログラムにより実行することを含み得、該プログラマブルプロセッサは、ストレージシステム、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスからデータ及び命令を受け取り、データ及び命令を該ストレージシステム、該少なくとも1つの入力デバイス、及び該少なくとも1つの出力デバイスに転送することができる専用又は汎用のプログラマブルプロセッサであってもよい。
【0171】
本開示の方法を実行するためのプログラムコードは、一つ又は複数のプログラミング言語の任意の組み合わせで作成することができる。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ又は他のプログラミングデータ処理装置のプロセッサ又はコントローラに提供されることにより、プログラムコードがプロセッサ又はコントローラによって実行される場合に、フローチャート及び/又はブロック図に規定された機能/動作を実行することができる。プログラムコードは、完全にマシンで実行されてもよいし、部分的にマシンで実行されてもよいし、独立したソフトパッケージとして部分的にマシンで実行されるとともに部分的にリモートマシンで実行されてもよし、又は完全にリモートマシン又はサーバで実行されてもよい。
【0172】
本開示の説明において、機械読み取り可能な媒体は、有形な媒体であってもよく、命令実行システム、装置又は機器によって、又は命令実行システム、装置又は機器と合わせて使用されるプログラムを含み、又は記憶する。機械読み取り可能な媒体は、機械読み取り可能な信号媒体又は機械読み取り可能な記憶媒体であってもよい。機械読み取り可能な媒体は、電子、磁気、光学、電磁、赤外線、又は半導体システム、装置、又はデバイス、又は前述した内容の任意の適切な組み合わせを含むことができるがこれらに限定されない。機械読み取り可能な記憶媒体のさらなる具体例として、1つ又は複数の配線による電気的接続、ポータブルコンピュータディスクカートリッジ、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(RMO)、消去可能なプログラマブルリードオンリーメモリ(EPRMO又はフラッシュメモリ)、光ファイバー、ポータブルコンパクトディスクリードオンリーメモリ(CD-RMO)、光学記憶装置、磁気記憶装置、又は前述した内容の任意の組み合わせを含む。
【0173】
ユーザとのインタラクションを提供するために、コンピュータでここで記載されているシステム及び技術を実施することができ、該コンピュータは、ユーザに情報を表示するための表示装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニターなど)、ユーザが入力をコンピュータに提供するためのキーボード及びポインティングデバイス(例えば、マウス又はトラックボールなど)を備えるができる。ユーザとのインタラクションを提供するために、他の種類の装置を使用することもでき、例えば、ユーザに提供するフィードバックは、いかなる形式のセンサーフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックなど)であってもよく、また、いかなる形式(例えば、音響入力、音声入力、触覚入力など)によって、ユーザからの入力を受付取るができる。
【0174】
ここに記載されているシステムと技術を、バックグラウンド部品に含まれる計算システム(例えば、データサーバとして)、又はミドルウェア部品を含む計算システム(例えば、アプリケーションサーバ)、又はフロント部品を含む計算システム(例えば、GUI又はネットワークブラウザを有するユーザコンピュータが挙げられ、ユーザがGUI又は該ネットワークブラウザによって、ここに記載されているシステムと技術の実施形態とインタラクションすることができる)、又はこのようなバックグラウンド部品、ミドルウェア部品、又はフロント部品のいかなる組合した計算システムで実施することができる。如何なる形式又はメディアのデジタルデータ通信(例えば、通信ネットワーク)を介して、システムの部品を互いに接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)及びインターネットを含む。
【0175】
コンピュータシステムは、クライアント端末とサーバを含み得る。通常、クライアント端末とサーバは、互いに離れており、通信ネットワークを介してインタラクションを行うことが一般的である。対応するコンピュータで動作することで、クライアント端末-サーバの関係を有するコンピュータプログラムによってクライアント端末とサーバの関係を生み出す。
【0176】
上記の様々な態様のフローを用いて、ステップを新たに順序付け、追加、又は削除することが可能であることを理解すべきである。例えば、本開示で記載された各ステップは、並列に実行しても良いし、順次に実行しても良いし、異なる順序で実行しても良い。本開示で開示された技術案が所望する結果を実現することができる限り、本開示ではこれに限定されない。
【0177】
上記具体的な実施形態は、本開示の保護範囲に対する限定を構成するものではない。当業者は、設計事項やその他の要因によって、様々な修正、組み合わせ、サブ組み合わせ、及び代替が可能であることを理解するべきである。本開示の要旨及び原理原則内における変更、均等な置換及び改善等は、いずれも本開示の保護範囲に含まれるべきである。