[1]ディープラーニングでよく使われるLinuxコマンドまとめ
1.man: man コマンド。特定のコマンドのヘルプ ドキュメントを表示できます。q を押してヘルプ ドキュメントを終了します。
2.cd: ディレクトリの切り替えに使用します。cd -最後の 2 つで使用できます。 セカンダリ ディレクトリ間を行き来します。
3.touch: touch file はファイルを作成します。
4.ls: ls -lh は、現在のディレクトリ内のファイルの詳細情報を一覧表示できます。
5.pwd: pwd コマンドは、ユーザーの現在の作業ディレクトリを絶対パスで表示します。
6.cat: cat file は、ファイルの内容を表示します。
7.mkdir: mkdir dir はディレクトリを作成できます。mkdir -p dir/xxx/xxx はディレクトリを再帰的に作成できます。
8.cat: cat ファイルにはファイルの内容が表示されます。q を押して終了します。
9.more: more file ファイルの内容が表示されます。q を押して終了します。
10.grep: フィルタリング コマンド。たとえば、現在のディレクトリで py ファイルを検索したいとします (ls -lh | grep .py)
11. whereis: 検索可能 whereis python3
Redirect> や >> など、指定したキーワードを含むファイル: Linux では、コマンドの実行結果をファイルにリダイレクトでき、コンテンツをリダイレクトできます。端末に表示 指定したファイルに出力・追記します。このうち、> は出力を意味し、元のファイルを上書きします。>> は追加を意味し、既存のファイルの末尾にコンテンツを追加します。
12.cp: cp dst1 dst2 はファイルをコピーし、cp -r dst1 dst2 はフォルダをコピーします。
13.mv: mv dst1 dst2 は、ファイルとディレクトリを移動したり、ファイルやディレクトリの名前を変更したりできます。
14.zip: zip ファイル.zip ファイル圧縮ファイル; zip dir.zip -r dir 圧縮フォルダー。
15.unzip: unzip file.zip は、zip コマンドで圧縮された .zip ファイルを解凍します。
16.tar:
tar -cvf file.tar dir パッケージ化フォルダー
tar -xvf file.tar の解凍 30.find: このコマンドはファイルを検索するために使用され、強力な機能を持っています。 find . -name "*.c" は、現在のディレクトリとそのサブディレクトリ内で .c 拡張子を持つすべてのファイルを検索することを意味します。 29.nohup sh test.sh &: プログラムはバックグラウンドで実行され、ハングアップしません。 28.nvidia-smi: GPU の使用状況を確認します。 27.vim: ファイルの内容を編集します。 26.apt-get: パッケージのインストール、アップグレード、およびクリーンアップに使用されます。 25.top: top コマンドを使用して、システム プロセッサのステータスをリアルタイムで監視できます。 24.ln: ln -s dst1 dst2 は Windows ショートカットと同様にファイルへのソフト リンクを作成し、ln dst1 dst2 はファイルへのハード リンクを作成します。リンクに関係なく、dst1 には絶対パスを使用することをお勧めします。 23wget: wget url は、指定された URL からファイルをダウンロードします。 22.top: CPU、メモリ、プロセス情報など、システムの実行ステータスをリアルタイムで表示します。 21.du: du -h dir でフォルダーのサイズを確認します。 20.df: df -h はディスク容量をチェックします。 19.kill: kill PID は、PID に基づいてプロセスを強制終了します。 18.ps: ps aux は、すべてのプロセスの詳細情報をリストします。 17.chmod :chmod - R 777 データは、誰でも読み書きできるようにデータ フォルダー全体を変更します。 tar -zxvf file.tar.gz 解凍
tar -czvf file.tar.gz dir 圧縮フォルダー
[2] コンピュータのマルチスレッドとマルチプロセスの違いは何ですか?
プロセスとスレッドの基本概念:
プロセス: 同時に実行されるプログラムの実行中にリソースを割り当て、管理するための基本単位であり、動的な概念であり、コンピューター システム リソースを争うための基本単位です。
スレッド: プロセスの実行単位であり、プロセス内のスケジューリング エンティティです。プロセスよりも小さく、独立して動作する基本単位。スレッドは軽量プロセスとも呼ばれます。
プログラムには少なくとも 1 つのプロセスがあり、プロセスには少なくとも 1 つのスレッドがあります。
スレッドの意味:
各プロセスには独自のアドレス空間、つまりプロセス空間があります。ネットワーク環境では通常、サーバーは未知の数のユーザーからの同時リクエストを受信する必要があります。リクエストごとにプロセスを作成することは明らかに機能しません(システム (ユーザー要求に応答する際のオーバーヘッドが高く効率が低い) のため、オペレーティング システムにスレッドの概念が導入されました。スレッドの実行プロセスは線形です。途中で中断や一時停止が発生することもありますが、プロセスが所有するリソースは線形実行プロセスのみに使用されます。スレッドの切り替えが発生した場合、これらのリソースは保護する必要があります。 プロセスはシングルスレッド プロセスとマルチスレッド プロセスに分けられます。シングルスレッド プロセスもマクロの観点からは線形実行プロセスであり、ミクロな視点から見た単一の実行プロセス。マルチスレッド プロセスはマクロ レベルでは線形であり、ミクロ レベルでは複数の操作を実行します。
プロセスとスレッドの違い:
アドレス空間: 同じプロセス内のスレッドはこのプロセスのアドレス空間を共有しますが、プロセスは独立したアドレス空間を持ちます。
リソースの所有権: 同じプロセス内のスレッドは、メモリ、I/O、CPU などのプロセスのリソースを共有しますが、プロセス間のリソースは独立しています。 (プロセスがクラッシュしても、保護モードの他のプロセスには影響しませんが、1 つのスレッドのクラッシュによりプロセス全体が停止する可能性があります。そのため、マルチプロセスはマルチスレッドよりも堅牢です。 . プロセスが切り替わるとリソースが消費され効率が悪くなるため、頻繁に切り替わる場合にはプロセスよりもスレッドを使用した方が良いです。同時に特定の変数を共有する場合は、プロセスではなくスレッドのみを使用できます。)
実行プロセス: それぞれの独立したスレッドには、プログラム実行のエントリ ポイント、順次実行シーケンス、およびプログラム終了があります。ただし、スレッドは独立して実行できず、アプリケーション プログラム内に存在する必要があり、アプリケーション プログラムは複数のスレッドの実行制御を提供します。 (スレッドはプロセスベースです)
スレッドはプロセッサ スケジューリングの基本単位ですが、プロセスはそうではありません。
両方を同時に実行できます。
プロセスとスレッドの長所と短所:
スレッド実行のオーバーヘッドは小さいですが、リソースの管理と保護には役立ちません。
プロセス実行のオーバーヘッドは高くなりますが、リソースを適切に管理および保護できます。
マルチ処理を使用する場合とマルチスレッドを使用する場合:
リソースの管理と保護に対する高い要件があり、オーバーヘッドと効率に制限がない場合は、マルチプロセッシングが使用されます。 (CPU 負荷の高いタスク)
高効率が必要な場合、頻繁な切り替えが必要な場合、およびリソースの保護と管理の要件がそれほど高くない場合は、マルチスレッドが使用されます。 (I/O集中型のタスク)
[3] TCP/IP 4 層モデルの関連概念
TCP/IP四层模型:
-
アプリケーション層: ファイル転送プロトコル (FTP)、リモート ログイン プロトコル (Telnet)、電子メール プロトコル (SMTP)、ネットワーク ファイル サービス プロトコル (NFS)、ネットワーク管理プロトコル (SNMP) など、さまざまなアプリケーション間のプロトコルを担当します。
-
トランスポート層: 信頼性の高い伝送を担う TCP プロトコルと効率的な伝送を担う UDP プロトコル。
-
ネットワーク層: IP、ICMP、ARP、RARP、およびアドレス指定 (相手のデバイスを正確に見つける) を担当するその他のプロトコル。
-
データリンク層: 物理チャネル (ネットワーク ケーブル) でデジタル信号を正確に送信する役割を果たします。
四层模型逻辑:
送信側は上から下に向かって、上位層からのデータのヘッダに各層プロトコルのデータ(部首)を付加して下位層に送信します。
受信側は下から上に動作し、下位層から受信したデータを復号化し、ヘッダー内の部首を削除してから上位層に送信します。
暗号化と復号化の層を経て、アプリケーション層は最終的に必要なデータを取得します。
[4] OSI 7 層モデルの関連概念
[5] Linuxにおけるプロセス状態の種類
- 実行中 (実行中または実行キューで待機中)
- 割り込み (スリープ、ブロック、特定の状態の形成を待機、または信号の受信を待機)
- 中断不可 (信号を受信してもウェイクアップせず、実行できません。プロセスは割り込みが発生するまで待機する必要があります)
- ゾンビ (プロセスは終了しましたが、親プロセスが wait4() システムコールを呼び出して解放されるまでプロセス記述子は存在します)
- 停止 (プロセスは SIGSTOP、SIGSTP、SIGTIN、SIGTOU シグナルの受信後に実行を停止します)
[6] ps auxコマンドとgrepコマンドが連携してLinuxのプロセスを管理する
ps関連のコマンド
ps コマンド (プロセス ステータス) は、最も基本的で非常に強力なプロセス表示コマンドです。
- ps a は、他のユーザーのプログラムを含む、現在の端末のすべてのプログラムを表示します。
- ps -A はすべてのプログラムを表示します。
- ps c がプログラムをリストする場合、パス、パラメータ、常駐サービスの ID は含まずに、各プログラムの実際の命令名が表示されます。
- ps -e このパラメータの効果は、「A」パラメータを指定した場合と同じです。
- ps e がプログラムをリストする場合、各プログラムで使用される環境変数が表示されます。
- ps f は、ASCII 文字を使用してツリー構造を表示し、プログラム間の関係を表現します。
- ps -H は、プログラム間の関係を示すツリー構造を表示します。
- ps -N は、ps コマンドを実行する端末下のプログラムを除くすべてのプログラムを表示します。
- ps s は、プログラム信号形式を使用してプログラムのステータスを表示します。
- ps S には、プログラムをリストするときに中断されたサブルーチン情報が含まれます。
- ps -t <端末番号> 端末番号を指定し、端末に属するプログラムの状態を一覧表示します。
- ps u ユーザー指向の形式でプログラムのステータスを表示します。
- ps x 端末を区別せずにすべてのプログラムを表示します。
ps aux | more コマンド
このコマンドは、プロセスの詳細なステータスを表示します。
パラメータの説明:
- USER: プロセスの所有者。
- PID: プロセスの ID。
- PPID: 親プロセス。
- %CPU: プロセスが占有している CPU の割合。
- %MEM: プロセスが占有しているメモリの割合。
- NI: プロセスの NICE 値。値が大きいほど、必要な CPU 時間が少なくなります。
- VSZ: このプロセスによって使用される仮想メモリの量 (KB)。
- RSS: このプロセスによって占有される固定メモリ量 (KB)。
- TTY: プロセスはどの端末で実行されていますか? 端末に関係ない場合は表示されますか? 。 pts/0 などの場合は、ホストプロセスがネットワーク接続されていることを意味します。
- WCHAN: 現在のプロセスが実行中かどうかを確認し、- であれば実行中です。
- START: プロセスの開始がトリガーされる時刻。
- TIME: プロセスが実行するために実際に CPU を使用した時間。
- COMMAND: コマンドの名前とパラメータ。
- STAT ステータス ビットの一般的なステータス文字:
D 無中断スリープ状態 (通常は IO プロセス)。
R 実行中および使用可能 キュー内で通過可能。
S はスリープ状態です。
T は停止または追跡されています。
W はメモリ スワップに入ります (カーネル 2.6 以降は無効) ;
X 個のデッドプロセス (基本的にまれ);
Z 個のゾンビプロセス;
< 優先度の高いプロセス
N 優先度の低いプロセス
L 一部のページがメモリにロックされています。
s プロセスのリーダー (その下に子プロセスがあります) ;
l マルチプロセス (NPTL pthread と同様、CLONE_THREAD を使用); + バックグラウンドに配置されたプロセス グループ;
ps aux | grep xxx コマンド
ps コマンドを直接使用すると、すべてのプロセスの状態が表示されますが、通常、特定のプロセスの状態を表示するには grep コマンドと組み合わせて使用します。
grep (グローバル検索正規表現 (RE) とその行の出力、正規表現の包括的検索とその行の出力) は、正規表現を使用してテキストを検索し、一致する行を出力することができる強力なテキスト検索ツールです。
たとえば、すべての Python プロセスを表示したい場合は、ターミナルに次のコマンドを入力します。
ps aux | grep python
すべての Python 関連のプロセスをターミナルに出力して表示できます。関連するパラメータは、以前の ps aux | more と一致しています。
プロセス終了コマンド
kill コマンドを使用してプロセスを終了できます。
次の手順に示すように:
kill PID //杀掉进程
kill -9 PID //强制杀死进程
[7] Git、GitLab、SVN の関連知識
ギット
Git は現在主流のオープンソース分散バージョン管理システムで、プロジェクトのバージョンを効果的かつ迅速に管理できます。
中央サーバーを必要とする集中バージョン管理システムである SVN とは異なり、Git には中央サーバーがありません。
Gitの機能:バージョン管理(バージョン管理、リモートウェアハウス、ブランチコラボレーション)
Git ワークフロー:
一般的な Git コマンド:
git init 创建仓库
git clone 克隆github上的项目到本地
git add 添加文件到缓存区
git commit 将缓存区内容添加到仓库中
GitLab
GitLab は、Git に基づくオンライン コード ウェアハウス ソフトウェアです。GitLab に基づいて、GitHub と同様のウェアハウスを構築できます。 ただし、GitLab には完全な管理インターフェイスと権限制御があり、セキュリティが高く、企業や学校などのシナリオで使用できます。
SVN
SVN の正式名は Subversion で、オープンソースのバージョン管理システムです。 Git とは異なり、SVN は集中型バージョン管理システムです。
SVN には、すべてのファイルのリビジョンを保存する集中管理サーバーが 1 つだけあり、共同作業する人々はクライアントを通じてこのサーバーに接続し、最新のファイルを取り出したり、更新を送信したりできます。
SVN の特徴はセキュリティ、効率、リソース共有です。
SVN の一般的な操作:
Checkout 检出代码
Update 更新代码
Commit 提交代码
Add 提交新增文件
Revert to this version + commit 撤销已经提交的代码
[8] コルーチンの関連概念
コルーチン (マイクロスレッドとも呼ばれます) はスレッド上で実行され、より軽量です。コルーチンはスレッドの総数を増加させず、スレッド上に構築するだけです。複数の実行時分割多重化によるコルーチンにより、プロジェクトの効率が大幅に向上します。
コルーチンの特徴:
- コルーチンはサブルーチンに似ていますが、実行中にコルーチンを内部で中断し、他のコルーチンの実行に切り替えて、適切なタイミングで戻って実行を継続できます。コルーチン間の切り替えには、システム コールやブロッキング コールが必要ありません。
- コルーチンは 1 つのスレッドでのみ実行され、ユーザー モードで発生するロジックです。また、コルーチン間の切り替えはスレッド切り替えではなくプログラム自身で制御するため、スレッドに比べてスレッドの作成や切り替えにかかるコストを節約できます。
- スレッドが 1 つしかないため、コルーチンにマルチスレッドのロック機構が必要なく、同時に変数を書き込んでも競合が発生しません。共有リソースはロックせずにコルーチン内で制御され、ステータスのみが必要ですが決まるため、マルチスレッドよりも実行効率が高くなります。
コルーチンは、多数の I/O 操作を伴うシナリオに適しており、非常に良好な結果を達成できます。第一に、システム メモリが削減され、第二に、システム切り替えのオーバーヘッドが削減されるため、システム パフォーマンスも向上します。
非同期呼び出しに変更しない限り、コルーチンで I/O をブロックするメソッド (印刷、ファイルの読み取りなど) を呼び出さないようにしてください。コルーチンは I/O 集中型のタスクでのみ役割を果たします。
[9] Linux システムに関する概念
Linux システムはオペレーティング システム (オペレーティング システム、OS と呼ばれます) であり、ソフトウェアの一部であり、ハードウェアに基づくソフトウェアの最初の層、つまりハードウェアとアプリケーション ソフトウェアの間の橋渡しとなります。
Linux システムは、他のプログラムの動作を制御し、システム リソースを管理し、メモリの管理と構成、システム リソースの需要と供給の優先順位の決定など、最も基本的なコンピューティング機能を提供します。また、いくつかの機能も提供します。基本的なサービスプログラム。 Linux システム カーネル は、ハードウェア抽象化レイヤー、ハードディスクおよびファイル システムの制御、およびマルチタスク機能を提供するシステム コア プログラムを指します。 Linux ディストリビューション システム は、Linux システム カーネルと一般的に使用されるさまざまなアプリケーション ソフトウェアの集合です。
Linux システムではすべてがファイルです。 Linux システムでは、ディレクトリ、キャラクタデバイス、ブロックデバイス、ソケット、プリンタなどはファイルに抽象化されます。Linux システム内のすべてのファイルは、「ルート (/)」ディレクトリから始まり、ツリー構造に従います。共通ディレクトリの使用を定義します。ファイル名とディレクトリ名では大文字と小文字が厳密に区別されます。
Linuxシステムのファイルディレクトリ構造
- /usr: これは、(複数の) ユーザー ツールとアプリケーションの大部分が含まれる非常に重要なディレクトリです。Windows のプログラム ファイル ディレクトリと同様に、多くのユーザー アプリケーションとファイルがこのディレクトリに配置されます。
- /lib: システムの起動時に使用される関数ライブラリと、コマンドによって呼び出される関数ライブラリが /bin および /sbin の下に格納されます。ほとんどすべてのアプリケーションでこれらの共有ライブラリを使用する必要があります。
- /var: 頻繁に変更されるディレクトリやファイル (さまざまなログ ファイルを含む) など、拡大し続けるコンテンツを保存します。
- /boot: Linux の起動に必要なコア ファイル (Linux カーネル ファイル) を保存します。これには、ブート プログラム ファイル、リンク ファイル、イメージ ファイルなどが含まれます。
- /home: ユーザーのホーム ディレクトリ。Linux では、各ユーザーに独自のディレクトリがあります。ディレクトリ名は通常、ユーザー アカウントにちなんで付けられ、保存されたファイル、個人設定などが含まれます。
- /sbin: s はスーパー ユーザーを意味し、システム管理者が使用するシステム管理コマンドを保存します。
- /bin: 現在のユーザーのシステム管理コマンド (cat、cp、ps など) が保存されます。
- /etc: システム管理に必要なすべての構成ファイルとサブディレクトリ (人事アカウントとパスワード ファイル、さまざまなサービスの開始ファイルなど) を保存します。
- /tmp: 一時ファイルを保存します。一時ファイルはシステムの再起動時に削除されます。
- /snap: Ubuntu 16.04 以降のバージョンでは snap パッケージ マネージャーが導入されており、関連するディレクトリとファイル (インストール ファイルを含む) は /snap にあります。
- /lost+found: このディレクトリは通常は空ですが、システムが不正にシャットダウンされると、このディレクトリに失われたフラグメントが生成されます。
- /media: Linux システムは、U ディスク、CD-ROM ドライブなどの一部のデバイスを自動的に認識します。認識後、Linux は、認識されたデバイスをこのディレクトリにマウントします。
- /srv: このディレクトリには、サービスの開始後に抽出する必要があるデータが保存されます。
- /root: このディレクトリは、システム管理者ユーザーのホーム ディレクトリです。
- /opt: このディレクトリには、インストールされたサードパーティ ソフトウェアが保存されます。たとえば、Oracle データベースはこのディレクトリにインストールできます。
- /mnt: 他のファイル システム (ハードディスク パーティションを含む) をマウントするためのディレクトリ。
- /lib64: lib ディレクトリと同様、64 ビット ライブラリ ファイルを保存します。
- /srv: サービスの略語と見なすことができます。これは、一部のネットワーク サービスの開始後にこれらのサービスがアクセスする必要があるデータ ディレクトリです。www、ftp などの一般的なサービスです。
- /proc: このディレクトリ自体は仮想ファイル システムであり、このディレクトリに配置されるデータはメモリ内にあり、ハード ディスクの容量を占有しません。
- /sys: このディレクトリは実際には /proc に非常に似ており、主にカーネル関連の情報を記録し、ハードディスク容量を占有しない仮想ファイル システムでもあります。
- /dev: Linux のすべてのデバイスとインターフェイス デバイスは、このディレクトリにファイルの形式で存在します。このディレクトリ内のファイルにアクセスする限り、デバイスにアクセスするのと同じです。
Linux システムの種類
- Red Hat Enterprise Linux: Red Hat は、世界で最も広く使用されている Linux システムです。非常に強力なパフォーマンスと安定性を備えており、多くの運用環境で使用されている (有料) システムです。
- Fedora: Red Hat がリリースしたデスクトップ システム スイート。ユーザーは最新のテクノロジーやツールを無料で体験できます。これらのテクノロジーやツールは、成熟すると RedHat システムに追加されるため、Fedora は RedHat システムの実験版ともなっています。
- CentOS: RedHat システムを再コンパイルしてユーザーに無料でリリースすることで、幅広いユーザーを獲得しています。
- Deepin: 中国でリリースされ、優れたオープンソースの完成品を統合および構成しています。
- Debian:安定性とセキュリティが高く、基本サポートは無料で、海外での認知度や利用率も高い。
- Ubuntu: Debian から派生したオペレーティング システムです。新しいハードウェアとの高い互換性があります。 Ubuntu と Fedora はどちらも優れた Linux デスクトップ システムであり、Ubuntu はサーバー分野でも使用できます。
【10】LinuxシステムとWindowsシステムの違いは何ですか?
- Linux システムはより安定しており、効率的です。
- Linux システムは無料 (または少額の料金) ですが、商業的には Windows システムが主流です。
- Linux システムには脆弱性が少なく、パッチがすぐに適用されます。
- Linux システムは、複数のユーザーが同時にコンピュータを使用することをサポートします。
- Linux システムには、より安全なユーザーおよびファイルのアクセス許可ポリシーがあります。
- Linux システムはソース コードにアクセスし、ユーザーのニーズに応じてコードを変更できますが、Windows システムはソース コードにアクセスできません。
- Linux システムはさまざまな深層学習サポート ソフトウェアをより適切にサポートできますが、Windows システムは多数のビデオ ゲーム ソフトウェアをサポートできます。
【11】POC実証試験の考え方
POC (概念実証)、つまり概念実証。これは通常、企業が製品を選択するとき、または外部導入プロジェクトを開始する前に実行する、製品またはサプライヤーの能力検証作業の一種です。主な検証内容:
- 製品の機能。製品の機能は企業が提供しますが、企業は自社のニーズに応じて機能のリストを提供することも、複数のサプライヤーと連絡を取って必要な機能をリストアップすることもできます。
- 製品のパフォーマンス。パフォーマンス指標も企業によって提供され、特定のパフォーマンス指標に対する環境、ハードウェア機器、その他のテスト環境要件を提供することが推奨されます。
- 製品 API の適合性。
- 製品関連の技術文書の標準化と完全性。
- カスタム関数の開発が含まれる場合は、API のオープン性とサプライヤーの実装能力を検証することも必要です。
- 企業の資格規模や企業の導入事例など
最終的な分析では、検証内容は、企業が選択した製品またはサプライヤーが企業のニーズを満たすことができ、提供された情報が正確で信頼できることを証明することです。
POC テスト作業の前提条件:
- 事前調査は十分であり、製品やサプライヤーについて比較的詳細なコミュニケーションと理解が得られています。
- 企業は自社製品に対して比較的明確なニーズを持っています。
POC テスト作業の参加者:
ユーザー代表、ビジネス リーダー、プロジェクト リーダー、テクニカル アーキテクト、テスト エンジニア、ビジネス マネージャーなどを使用します。
POC テスト作業準備文書:
- POC テスト作業の説明文書。内容には、テスト内容、テスト要件(民営化展開など)、テスト基準、タイムスケジュールなどが含まれます。
- 機能テストケース。主に機能の信頼性と精度を確認します。内容には、機能名、機能の説明などが含まれます。
- シナリオのテストケース。主にエンタープライズチームの応答速度、実装能力、統合能力をテストします。この部分は通常、企業のニーズに応じて決定されます。複雑すぎることはお勧めできません。結局のところ、サプライヤーが実装する必要があります。遅延が長すぎると、企業の忍耐力に影響します。そして時間も延びてしまいます。
- 技術評価計画。主に製品の性能、機能範囲、統合効率、技術文書の品質を検証します。
- ビジネス評価計画。主に企業力、企業技術人材能力、著作権検証、市場背景、製品見積などが含まれます。
POC テスト作業の主なプロセスは次のとおりです。
フェーズ 1: 作業の開始
ビジネスまたは外部の代表者はサプライヤーに正式な招待状を発行し、POC テスト作業の説明を添付します。
POC コラボレーション グループを設立します。迅速な通信と応答のニーズを満たすため。
民営化導入にあたっては、サプライヤーの導入環境要件を収集し、サプライヤーと共同で導入作業を実施する必要があり、同時に企業参加者は導入作業の記録を保管する必要があります。
第 2 段階: 製品のプロモーションとオンサイトでの集中テスト
サプライヤーは、企業が提供する POC テスト作業指示および対応するテスト モジュールのユースケースまたはソリューションに基づいて、オンサイトでの製品テストとデモンストレーションを実施します。
企業参加者は機能テストに参加し、記録や意見を記入します。この段階では、サプライヤーは多くの場合、現場での運用指導を提供する必要があります。
第3段階:技術評価
サプライヤーは企業が提供した技術要件に基づいて関連するサポート技術文書を提供し、企業は現場で比較を実施し、実際の状況に基づいて統計記録を作成します。また、サプライヤーから提供された情報と比較記録を保管してください。
シナリオのデモ設計に関しては、企業は実装担当者の能力、実装時間、実装精度を比較することをお勧めします。
フェーズ 4: 断続的なテスト作業
このフェーズは、最初のフェーズの開始時に開始されます。機能のテストに加えて、主要なユーザーのエクスペリエンスやユーザビリティの評価も含まれます。このセクションでは、企業ユーザーが主観的な評価を行うことができますが、断続的なテストを範囲を拡大して組織し、テストユーザーの記録を保管することが推奨されます。休憩期間は、実際の状況に応じて 1 日または複数日にすることができます。
第5段階:事業検証
お取引先様は、当社が提示する事業評価計画書に基づき、積極的に業務に協力していただきます。顧客確認が伴う場合は、企業側も確認を行う必要があります。この部分の作業は最初の段階から開始することもできます。
第 6 段階: 承認申請、分析、要約
作業の各段階で、参加者、時間、作業時間を記録し、テストプロセス中に会社とサプライヤーの文書を分類してアーカイブする必要があります。各段階を分析・比較し、まとめて評価します。最後に、全体的な作業分析と要約を実行します。
POC の作業は企業やレベルによって異なり、テスト方法や投資強度も異なります。しかし、目的は同じです。製品またはサプライヤーの機能が企業のニーズを満たしているかどうかを確認することです。
【12】Docker関連の概念と共通コマンド
Docker の概要
Docker は、Go 言語に基づくオープン ソースのアプリケーション コンテナ エンジンであり、Apache2.0 プロトコルに準拠したオープン ソースです。
Docker は、コードと関連する依存関係を軽量でポータブルなコンテナーにパッケージ化し、それを仮想化も可能な一般的な Linux マシンに公開できます。
コンテナーは完全にサンドボックス メカニズムを使用しており、相互にインターフェイスを持たず (iPhone アプリと同様)、さらに重要なのは、コンテナーのパフォーマンスのオーバーヘッドが非常に低いことです。
Docker アプリケーションのシナリオ:
- Web アプリケーションの自動パッケージ化と公開。
- 自動化されたテストと継続的な統合とリリース。
- データベースまたはその他のバックエンド アプリケーションをサーバー環境に展開/調整します。
Docker アーキテクチャ
Docker は 3 つの基本ユニットで構成されます。
- イメージ: Docker イメージはルート ファイル システムに相当します。たとえば、公式イメージ ubuntu:16.04 には、Ubuntu16.04 の最も単純なシステムのルート ファイル システムの完全なセットが含まれています。
- コンテナ (Container): イメージ (Image) とコンテナ (Container) の関係は、オブジェクト指向プログラミングにおけるクラスとインスタンスに似ています。イメージは静的な定義であり、コンテナです。イメージが実行されているときのエンティティです。コンテナは作成、開始、停止、削除、一時停止などができます。
- ウェアハウス (リポジトリ): ウェアハウスは、画像を保存するために使用されるコード管理センターとみなすことができます。
Dockerコンテナの使用法
Dockerクライアント
Docker クライアントは非常にシンプルで、docker コマンドを直接入力して、Docker クライアントのすべてのコマンド オプションを表示できます。コマンド docker command --help を使用して、指定した Docker コマンドの使用方法の詳細を確認することもできます。
docker
コンテナの使用状況
ローカルで利用できないイメージを取得します。必要なイメージがローカルにない場合は、docker pull コマンドを使用してイメージをロードできます。
docker pull 镜像
コンテナを起動します。次のコマンドは、ubuntu イメージを使用してコンテナーを起動します。パラメーターは、コマンド ライン モードでコンテナーを開始することです。
docker run -it 镜像 /bin/bash
パラメータの説明:
- -i: コンテナー内で標準入力 (STDIN) を操作できるようにします。
- -t: 疑似端末または新しいコンテナ内の端末を指定します。
- /bin/bash: コマンドはイメージ名の後に配置され、ここでは対話型シェルが必要になります。
このソフトウェアのどのバージョンのイメージが <ウェアハウス名>:<ラベル> の形式で指定できます。ラベルが指定されていない場合は、latest がデフォルトのラベルとして使用されます。
ターミナルを終了するには、exit または CTRL+D を直接入力します。
停止したコンテナを起動します。すべてのコンテナを表示するコマンドは次のとおりです。
docker ps -a
docker ps コマンドを使用して、実行中のコンテナーを表示することもできます。
docker ps
docker start を使用して、停止したコンテナを起動できます。
docker start 容器
コンテナをバックグラウンドで実行したい場合は、 -d を渡してコンテナの実行モードを指定します。
docker run -itd --name 指定创建的容器名 容器 /bin/bash
-d パラメーターを追加しても、デフォルトではコンテナーに入りません。コンテナーに入りたい場合は、次のコマンドを使用してコンテナーに入る必要があります。
- ドッカーアタッチ
- docker exec: docker exec コマンドを使用することをお勧めします。このコマンドを使用してコンテナー ターミナルを終了しても、コンテナーは停止しません。
docker attach 容器 //如果从这个容器退出,会导致容器的停止。
docker exec -it 容器 /bin/bash //如果从这个容器退出,不会导致容器的停止。
コンテナを停止するには、次のコマンドを実行します。
docker stop 容器ID
停止したコンテナの再起動コマンド:
docker restart 容器ID
コンテナを削除します:
docker rm -f 容器ID
Dockerイメージの使用法
画像を列挙します。 docker イメージを使用して、ローカル ホスト上のイメージを一覧表示できます。
docker images
各パラメータの説明:
- REPOSITORY: イメージのウェアハウス ソースを表します
- TAG: 画像のタグ
- 画像ID: 画像ID
- CREATED: イメージの作成時間
- SIZE: 画像サイズ
鏡を見つけます:
docker search 镜像
各パラメータの説明:
- NAME: ミラーウェアハウスソースの名前
- DESCRIPTION: 画像の説明
- 公式: docker は正式にリリースされましたか?
- 星: Github の星と同様、いいね、いいねを意味します。
- 自動: 自動的に構築されます。
画像を削除:
docker rmi 镜像
Dockerイメージの変更とカスタマイズ
Dockerイメージの更新
Docker イメージを開始した後、いくつかのファイル、コードを書き込み、ソフトウェアを更新し、Docker イメージを終了して、ターミナルに次のコマンドを入力します。
docker commit -m="..." -a= "..." 容器ID 指定要创建的目标镜像名称
パラメータの説明:
- コミット: 固定フォーマット
- -m: 提出された説明情報
- -a: 画像の作成者を指定します
その後、docker イメージを使用して、イメージが正常に更新されたかどうかを確認できます。 (注: 既存のイメージ名を使用してイメージを作成しないでください。既存のイメージ名がなくなり、使用できなくなります)。
画像名を変更し、新しいタグを追加します
イメージ名を変更します (リポジトリ):
docker tag 容器ID 新名称
名前を変更せずにイメージ タグを変更します。
docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)
Dockerコンテナとローカルマシン間のファイル転送
ホストとコンテナーの間でファイルを転送する場合、コンテナーの完全な ID が必要です。
ローカルからコンテナに転送します。
docker cp 本地文件路径 容器name:/root/(容器路径)
コンテナからローカルに転送します。
docker cp 容器name:/root/(容器路径) 本地文件路径
Docker はホスト ファイル ディレクトリをマウントします
Docker は、ホスト上のディレクトリのミラー ディレクトリへのマウントをサポートできます。
docker イメージを起動するときに、次のコマンドを入力します。
docker run -it -v /宿主机绝对路径:/镜像内挂载绝对路径 容器REPOSITORY /bin/bash
-v パラメーターを使用すると、ホスト ディレクトリはコロンの前にあり、コロンの後のパスはイメージ内のマウント パスになります。これは絶対パスである必要があります。
ホストディレクトリが存在しない場合は自動的に生成されます。イメージについても同様です。
デフォルトのマウント パス権限は読み取りと書き込みです。読み取り専用として指定した場合は、以下を使用できます。 ro
docker run -it -v /宿主机绝对路径:/镜像内挂载绝对路径:ro 容器REPOSITORY /bin/bash
[13] ディープラーニングでよく使われるファイル形式のまとめ
- csv: データとラベルを簡単に保存するために使用できます。
- txt: 最も一般的なファイル形式で、データ パスとデータ ラベルを保存するために使用できます。
- Json: これは軽量のデータ交換形式であり、データ ラベルを保存するためによく使用されます。
- Yaml: データシリアル化言語であり、通常、ネットワーク モデルの構成パラメーターとトレーニング パラメーターを Yaml ファイルに分離してトレーニングと最適化を容易にするなど、構成ファイルを記述するために使用されます。
- Cfg: Darknet でネットワーク モデル構造を保存するための古典的なファイル形式。
- Protobuf: ニューラル ネットワークの重み情報を保存できる効率的な構造化データ ストレージ形式で、caffe によく登場します。
【14】TCPとUDPの違いは何ですか?
- TCP はコネクション指向であり、UDP はコネクションレスです。
- TCP は信頼性の高いサービスを提供します。つまり、TCP 接続を通じて送信されるデータはエラーがなく、失われず、繰り返されず、順番に到着します。UDP はベストエフォート配信を使用します。つまり、信頼性の高い配信は保証されません。
- TCP の論理通信チャネルは全二重の信頼できるチャネルですが、UDP は信頼できないチャネルです。
- 各 TCP 接続はポイントツーポイントのみであり、UDP は 1 対 1、1 対多、多対 1、および多対多の対話型通信をサポートします。
- TCP はバイト ストリーム指向です (スティッキー パケットの問題が発生する可能性があります)。基本的に、TCP はデータを一連の非構造化バイト ストリームとして扱います。UDP はメッセージ指向です (スティッキー パケットの問題は発生しません)。
- UDP には輻輳制御がないため、ネットワークの輻輳によってソース ホストの送信速度が低下することはありません (IP テレフォニー、リアルタイム ビデオ会議などのリアルタイム アプリケーションに役立ちます)。
- TCP ヘッダーのオーバーヘッドは 20 バイトですが、UDP ヘッダーのオーバーヘッドは小さく、わずか 8 バイトです。