なぜ“sasctl”が必要なのか?
オープンソースとの統合性はSAS Viyaの一つの重要な製品理念であり、そのための機能拡張を継続的に行っています。その一環として”sasctl”という新しいパッケージがリリースされました。SAS Viyaでは従来から、PythonからViyaの機能を使用するために”SWAT”パッケージを提供しており、SAS Viyaのインメモリー分析エンジン(CAS)をPythonからシームレスに活用し、データ準備やモデリングをハイパフォーマンスで実行することができるようになっていました。しかし、データ準備やモデル開発は、アナリティクス・ライフサイクル(AI&アナリティクスの実用化に不可欠なプロセス)の一部のパートにすぎません。そこで、開発されたモデルをリポジトリに登録・管理して、最終的に業務に実装するためのPython向けパッケージとして”sasctl”が生まれたのです。
sasctlの概要
sasctlで提供される機能は、大まかに、3つのカテゴリーに分けられます。
また、この3つのカテゴリーは、お互いに依存する関係を持っています。
1.セッション
sasctlを使用する前に、まずSAS Viyaのサーバーに接続する必要があります。(この接続は、ViyaマイクロサービスのRESTエンドポイントに対して行われることに注意してください)
SAS Viyaのサーバーへの接続は、セッションのオブジェクトを生成することにより行われます。
>>> from sasctl import Session >>> sess = Session(host, username, password) |
この時点で、sasctlはViya環境を呼び出して認証し、この後のすべての要求に自動的に使用される認証トークンを受け取りました。 ここからは、このセッションを使用してViyaと通信します。
2.タスク
タスクは一般的に使用される機能を意味し、可能な限りユーザーフレンドリーになるように設計されています。各タスクは、機能を実現するために、内部的にViya REST APIを複数回呼び出しています。例えば、register_modelタスクではREST APIを呼び出し、下記の処理を実行しています:
リポジトリの検索
プロジェクトの検索
プロジェクトの作成
モデルの作成
モデルのインポート
ファイルのアップロード
その目的としては、ユーザーがPythonを使って、アナリティクス・ライフサイクルで求められるタスクを実行する際に、sasctlの単一のタスクを実行するだけで済むようにすることです。
>>> from sasctl.tasks import register_model >>> register_model(model, 'My Model', project='My Project') |
今後も継続的に新しいタスクを追加していきますが、現在のsasctlには下の2つのタスクを含まれています:
① register_model
SASのモデルまたはPythonのモデルをSAS Viyaのモデルリポジトリに登録します。メタデータや入力/出力変数情報も自動的に登録され、スコアコードが生成されます。
② publish_model
モデルをモデルリポジトリから指定されているパブリッシュ先にパブリッシュします。MAS(Micro Analytics Service)にパブリッシュする場合は、自動的にスコアコードを実行するPythonオブジェクトが生成されます。
注意:このタスクではASTOREモデルはまだサポートしていません。
3. サービス
Sasctlのサービスは、本質的にViya RESTサービスのPython表現です。エンドユーザはサービスと直接やり取りする必要はありません。それらは、タスクを実行することで、内部的に使用されます。サービスを直接使用するには、下記コードのように、sasctlからサービスをインポートして、関数を呼び出します:
>>> from sasctl.services import model_repository >>> all_models = model_repository.list_models() |
ヒントとコツ
① セッションにログハンドラーを追加することによって、sasctlによって行われているREST呼び出しを確認します。
>>> sess = Session(host, username, password) >>> sess.add_stderr_logger() |
sess.add_stderr_logger(level=logging.DEBUG)を設定することによって、requestとresponse bodyを確認することができます。
② 多くの場合、ユーザーはSWATを介してSAS Viya(CAS)に既に接続している可能性があります。 その接続がRESTプロトコルを使用している場合、簡単に再利用してsasctl接続を作成できます。
>>> cas_sess = swat.CAS('viya.example.com', username='sasdemo', password='Orion123') >>> sasctl_sess = sasctl.Session(cas_sess) |
または、セッションの作成時にログイン認証に使用するauthinfoファイルを再利用できます。
>>> sasctl_sess = sasctl.Session('viya.example.com', authinfo='~/.authinfo') |
フィードバック
sasctlは決して完成形ではなく、皆様・主導のプロジェクトになるのを目指しています!
●Issues(問題・課題)
sasctlの使用中にバグや原因不明のエラーが発生した場合は、 GitHub issueを作成して問題を報告し、他のユーザーが問題を追跡、解決、発見できるようにしてください。
●Contributions(貢献)
sasctlへのコントリビューションは大小問わず大歓迎です! バグ修正、新機能追加、活用例の追加、またはドキュメントの改善などがあります。Contributing Guideを読んでその内容に従ってください。ガイドが明確でない場合は、改善意見も出してください。
●Ideas(アイデア)
sasctlを改善する方法についてのアイデアをぜひお願いします!すばらしい新機能やカッコイイアイデアがあれば、 GitHub issueを開いて、シェアしてください。
リーソース
- GitHub page
- Documentation
- Examples
- SAS Viya REST
この記事はSAS Institute Japanが翻訳および編集したもので、もともとはJonathon Walkerによって執筆されました。