web-dev-qa-db-ja.com

EnterpriseとStandardでRサービスを使用することの正確な利点は何ですか?

現在_SQL Server 2016 SP_標準版を使用していて、Rサービスをインストールしたい。 ドキュメント では、スタンドアロンインストールはエンタープライズ(Machine Learning Server (Standalone))でのみ許可されていると言われています。

また、私は投稿を見つけました、その男が標準で並列操作を使用することができず、メモリ制限があると話している:

enter image description here

正確なメモリ/プロセッサの制限は何か教えてもらえますか?

重いR計算を使用するなどの詳細が必要ですが、今のところテストでは、標準版の実装が期待どおりに機能していないことを示しています。

4
gotqn

オンラインブックの "SQL Server Machine Learning Servicesのエディション間の機能の可用性"ページ を確認してください。

基本的な統合と高度な統合の違いは規模です。高度な統合では、使用可能なすべてのコアを使用して、コンピューターが対応できる任意のサイズのデータ​​セットを並列処理できます。基本的な統合は2つのコアとメモリに収まるデータセットに制限されています。

Books Onlineでは、次のように、このページで展開の制限について詳しく説明しています。

(スタンドアロン)サーバーのみが、Microsoft(非SQLブランド)Rサーバーまたは機械学習サーバーのインストールに含まれている操作機能を提供します。運用には、Webサービスの展開とホスティング機能が含まれます。

(データベース内)インストールの場合、ソリューションを運用するための同等のアプローチは、コードをストアドプロシージャで実行できる関数に変換するときに、データベースエンジンの機能を活用することです。

6
Brent Ozar

ブレントが引用しているように、主な違いの1つは規模です。

計算が非常に並列である場合、つまり、各行を互いに独立して計算できる場合、sp_execute_external_script@parallel = 1を使用すると、R計算を簡単に並列実行できます。かみ砕いてメモリ不足になる可能性がある場合でも、かみつく可能性があることに注意してください。この場合、@params = N'@r_rowsPerRead INT', @r_rowsPerRead = Nを追加できます。ここで、Nは一度に読み取る行の最大数です。

上記を使用して、20億行のデータに対して10分未満でR計算を実行できました(明らかに、走行距離は異なる場合があります)。

適切な行が一緒にグループ化されるようにするなど、バッチ処理をさらに制御する必要がある場合は、Rスクリプト内からRevoScaleR関数を直接呼び出すことでこれを実現できると思いますが、これについては触れていません。

Standard Editionを絶対に使用する必要がある場合は、自分でデータをバッチ処理することで独創的にできますが、これを試したところ、コードが非常に複雑になり、Enterprise Editionストリーミングを利用するほど速くなかったことがわかりました。

詳細はこちら: https://docs.Microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql?view=sql-サーバー-2017

SSDTはGRANT EXECUTE ANY EXTERNAL SCRIPTをサポートしていないため、これをデプロイメントに使用している場合、問題が発生します。私はこれをユーザーの声の問題として提起しました https://feedback.Azure.com/forums/908035-sql-server/suggestions/32896864-grant-execute-any-external-script-not-recognised -b

4
CasualFisher