学術最適化を実現するクラウドサーバー構築 chatgpt
1 サーバーの準備
openAI にアクセスできるサーバー。メインランド構成の詳細については、以前の記事を参照してください。
Cloud Function は、メインランドで利用可能な OpenAI エージェントを構築します
ここでは Tencent クラウド サーバー、OpenCloud centos 8.6 システムを使用します。
2 クラウドサーバーの構成
2.0 FTP 構成
前回の記事では、Linux クラウド サーバーでファイル転送用に FTP を設定する方法を書きました
メインランドで利用可能な OpenAI エージェントを構築するクラウド機能の第 2 章
2.1 Python仮想環境
クラウドサーバーには独自の python3.6.8 があるようです。プロジェクトで必要な環境は比較的新しいため、再インストールする必要があります。新しいほど良いです。そうしないと、説明できない問題が多く発生するか、仮想マシンに惨殺されます。環境第一。例:
Python 3.6.8 をアンインストールします。
sudo yum remove python=3.6.8
または、Python をアンインストールします (Python2 が一部残らないように、すべてアンインストールすることをお勧めします)。
sudo yum remove python
2.1.1 python3.9のインストール構成
- Python 3.9 をインストールします。
sudo yum -y install python=3.9
- Python 3.9 が正常にインストールされたことを確認します。
python --version
- インストールが失敗した場合は、まず EPEL ウェアハウスのインストールを試みてから、1 と 2 を繰り返します。
sudo yum -y install epel-release
centos ではない場合、付属のサードパーティ ソフトウェア パッケージは yum ではない可能性があります。apt-get で試すことができます。
2.1.2 Python プロジェクトのダウンロード
- プロジェクトを配置するフォルダーを見つけて、このパスが見つかることを確認します。
git clone https://github.com/binary-husky/chatgpt_academic.git
gitをインストールしていない場合はgitをインストールする必要がありますが、gitをインストールするのは面倒だし、githubからのダウンロード速度も遅いかもしれないので、ローカルにダウンロードしてftpで転送しました。
ローカルにダウンロードすると修正が便利です。そんな厄介な vim を使いたくないと思いますよね。
- config.py を config_private.py ファイルにコピーし、その中の API_URL を変更して、前の記事で取得した香港のプロキシ アドレスと次のセクション /v1/chat/completions を参照するようにします。
香港のプロキシ アドレスは https://api.openai.com のみを意味するため
-
直接マッピングされるため、プロキシは必要ありません。
USE_PROXY = False
-
API_KEY 独自のキーを入力します
-
さらに、 main.py ファイルの最後の段落にパラメータを忘れずに追加してください
share=True
。追加しないと、外部リンクは生成されません (LAN 内でアクセスできるだけでなく)。
demo.queue(concurrency_count=CONCURRENT_COUNT).launch(server_name="0.0.0.0", share=True, server_port=PORT, auth=AUTHENTICATION, favicon_path="docs/logo.png")
2.1.3 Python仮想環境の作成
Linux にグラフィカル インターフェイスがある場合は、pycharm の使用を検討できますが、Python をインストールしてコマンド ラインを削除する方が簡単です。
Pythonで仮想環境を作成するには、
仮想環境を置くフォルダーを見つけて、プロジェクトディレクトリに置きます。
次の手順に従ってください。
-
virtualenv
モジュールをインストールします。pip install virtualenv
-
コマンド ラインで、仮想環境を作成するディレクトリに移動し、仮想環境を作成します。
virtualenv env_name
ここで、
env_name
は仮想環境に付ける名前です。これにより、現在のディレクトリに というenv
新しいフォルダーが作成され、そこに仮想環境がインストールされることに注意してください。 -
仮想環境をアクティブ化します。コマンドラインから仮想環境をアクティブ化するには、次のコマンドを実行します。
source env_name/bin/activate
Windows システムで仮想環境をアクティブにするには、次のコマンドを実行します。
env_name\Scripts\activate
-
仮想環境では、対応するインストール パッケージを自分でインストールできるようになりました。このプロジェクトでは、
python -m pip install -r requirements.txt
このときのディレクトリはプロジェクトのディレクトリである必要があることに注意してください。そうでないとrequirements.txtファイルが見つからないため、pwd
現在のディレクトリのパスを確認し、ls
現在のパスの下にどのファイルがあるかを確認することもできます。
-
環境とプロジェクトがあれば、直接実行できます。
python main.py
セクション 2.1.2 で変更を行った場合は、完了し、2 つのリンクが生成されます。出力は次のようになります。
これで準備完了です。確かにパブリック URL 経由で開くことができますが、
質問に答えられるかどうかは、APIkey が正しいかどうか、およびプロキシ アドレスが正しいかどうかによって異なります。
しかし、非常に厄介な問題があり、Python プログラムを終了するとプログラムも終了し、リンクが無効になってしまいます。
そして、ローカルホストがクラウドサーバーとの接続を閉じると、Python プログラムも終了します。
接続を閉じずにローカル ホストから実行できない場合、クラウドに移行する意味は何でしょうか?
では、どうすれば永遠に残ることができるのでしょうか?
3 プロジェクト「サービス」(バックグラウンドで実行されている Python プロジェクト)
クラウドに行く意味を持たせるためには、
最初の反応はプログラムを「サービス」することです
キーワードを考えた後、バックグラウンドで実行されます。
以前のプロジェクト ディレクトリ内、以前の仮想環境内
nohup python -u main.py > logfile.log 2>&1 &
説明:
-
nohupはバックグラウンドで実行するように指定されていませんが、このnohupはプログラムを永久に実行させるためのもので、前後とは関係ありません(これは変更する必要はありません)
-
「-u」はキャッシュが有効になっていないことを意味し、印刷情報はリアルタイムでログ ファイルに出力されます (-u を追加しない場合、ログ ファイルはコード内の印刷関数の情報を更新しません)リアルタイム)、プログラムは引き続き実行されますが、全体的にはまだ
快適ではなく、制御不能です。つまり、プログラムが破綻しているように感じるのです。 -
main.py これはプロジェクトのメインプログラムであり、実行したいプログラムです。
-
"> logfile.log" この閉じ括弧は、出力ログを次の logfile.log ログ ファイルに置きます。
-
2>&1 この2はエラー発生時に出力されるエラーメッセージを表します >& これはリダイレクトを表し、1は標準出力を表すので、エラーメッセージを標準出力にリダイレクトする組み合わせになります
-
& これはバックグラウンドで実行することを意味します
その後、特定の出力情報が logfile.log ファイルに表示されます。表示するコマンドは次のとおりです。
cat logfile.log
ローカルURLとパブリックURLあなたも含めてすべてがそこにありますウェブポート、プロキシ情報など。publicURLでは72時間有効と書いてありますが、実際に測ってみると無期限なので安心してください。
うまく実行できなかった場合、nohup コマンドによってプロセス番号も表示されます。何か問題を見つけた場合は、忘れずにプロセスを強制終了して再起動してください (結局のところ、nohup コマンドはバックグラウンドで永久に実行されることになります!)。
kill -9 PID
-9 は、無謀に殺すなどの属性である必要があります (プロセス番号だとは思わないでください。私はこのように死ぬまで遊んだだけです); PID は、上記のコマンドによって返される値であるプロセス番号を指します。
バックグラウンドで実行した後、すべてが正常であると感じて閉じてから、何か問題があることに気づきましたが、プロセスが見つからない場合は、どうすればプロセスを見つけることができますか?
ps aux |grep main
それで全部です。
ただし、huggingface によって転送されるこのリンクは読み込み速度の低下につながります。パブリック ネットワーク IP またはドメイン名を通じてアクセスしたい場合は、
localURL を考慮する
4 localURL アクセス (パブリック ネットワーク IP アクセス、ドメイン名アクセス)
localURL 経由で直接アクセスする場合は、クラウド サーバーにファイアウォール ルールを追加し、クラウド サーバー システムでポートを開く必要があります。
4.1 クラウドサーバーにファイアウォールルールを追加する
4.2 クラウドサーバーシステムのファイアウォールがポートを解放する
iptables の代わりに firewalld を使用してください
- ファイアウォール サービス firewalld を開きます
# 开启防火墙服务
sudo service firewalld start
或者
sudo systemctl start firewalld
# 重启防火墙服务
sudo service firewalld restart
# 关闭防火墙服务
sudo service firewalld stop
- ファイアウォール サービスのステータスを表示する
# 查看防火墙服务状态
sudo systemctl status firewalld
# 查看防火墙状态
sudo firewall-cmd --state
- 実行状態で、必要なポートをファイアウォールに追加します。
# 查看防火墙服务状态
sudo firewall-cmd --permanent --zone=public --add-port=666/tcp
或者
sudo firewall-cmd --zone=public --add-port=5151/tcp --permanent
# 重新加载配置
sudo firewall-cmd --reload
このコマンドの機能は、tcp プロトコルのポート 666 と 5151 を管理者としてパブリック ドメインに永続的に開くこと、つまり、これら 2 つのポートの tcp トラフィックの通過を許可することです。
必要なポートを追加します。
間違って削除したい場合は、add-port をremove-port に変更してください。たとえば、Google はいくつかの安全でないポートを無効にしています: Google は
ポートを制限しています
。6666 がその中にあります。
sudo firewall-cmd --permanent --zone=public --remove-port=6666/tcp
- 開いているポートを表示する
# 查看对公开域永久放开的端口
sudo firewall-cmd --permanent --zone=public --list-ports
或者
# 列出所有的firewalld规则
sudo firewall-cmd --list-all
最初に Python プロジェクトをバックグラウンドで実行し、ランダムな Web ポートを見つけてからファイアウォール ルールを追加すると、パブリック ネットワークの IP+ポートを介して Web アプリケーションにアクセスできるようになります。
この解放されたポートを修正して、実行するたびにポートを再解放しないようにするには、Python 構成ファイルを変更して固定ポートを設定します。
4.3 Python プロジェクトのポートを変更する
Python プロジェクトのパスに移動して、config_private.py 設定ファイルのポートを変更します。WEB_PORT = -1
これは、ポートをオンにするたびにランダムになることを意味し、面倒なので、対応する手放したいポートに変更しました以前のファイアウォール ルールに戻ります。
その後、第 3 章と同様に再実行します。
5 ドメイン名アクセス
5.1 ファイリング
数日取り組んだのですが、非常に面倒で、要件も相変わらず厳しく、メンタルが崩壊してしまいました。
5.2 DNS 解決を変更する (ファイルしたくない場合は、Cloudflare を使用してください)
Cloudflare ダッシュボード
にアカウントを登録するだけで、無料で使い始められます。
- Cloudflare ダッシュボードアカウントにサインアップして、無料で使用を開始してください。
- サイトを追加 (サイトを追加)、ドメイン名を入力します。
- その後、指示に従ってください。そうでない場合は、デフォルトに従い、最後まで保存し、彼が指定した DNS サーバーを保存します (後でクラウド サーバーの DNS サーバーに変更します)。送信後、24 時間以内に Cloudflare が解析したメールが届きます。
- 購入したドメイン名のクラウド製品でドメイン名登録を見つけて、ドメイン名の管理を選択し、DNS 解決で DNS サーバーを変更し、保存したアドレスに置き換えます。
5. 有効になるまで待ちます。
https分析、、、書きます。